2016-08-16 3 views
0

У меня есть две таблицыКак получить данные из другой таблицы по указанному столбцу?

  1. // пользователей ID имя пользователя пароль

  2. // Профили user_id логотип

я хочу, чтобы получить информацию о профиле, который User_ID равно зарегистрированному идентификатору пользователя, но я не могу этого сделать. как я могу это сделать?

/Профиль модель

<?php 

namespace App\Http\Models; 

use Illuminate\Database\Eloquent\Model; 

class Profile extends Model 
{ 
    public function user() 
    { 
     $this->belongsTo('App\User'); 
    } 
} 

// клиент контроллер

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Models\Profile as Profile; 
use App\Http\Requests; 
use Auth; 

class ClientController extends Controller 
{ 
    public function index() 
    { 
     $profile = Profile::find(Auth::user()->id); 
     return view('client.profil')->with($profile); 
    } 
} 

я получил эту ошибку:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'profiles.id' in 'where clause' (SQL: select * from `profiles` where `profiles`.`id` = 1 limit 1) 

обычно это может быть так: выбрать * из профилей, где user_id = 1 // 1 зарегистрирован user_id

ответ

2

Во-первых, вы не используете первичный ключ. Все в порядке, но вам нужно сказать «Красноречивый». В вашей модели Profile убедитесь, что вы установили $primaryKey в null.

protected $primaryKey = null; 

Затем вам необходимо определить обратные отношения в вашей App\User модели:

public function profile() 
{ 
    return $this->hasOne('App\Profile'); 
} 

И то, что вы действительно хотите, чтобы не запрашивать профиль, идентификатор пользователя, но для загрузки пользователь с его профилем, так что давайте посмотрим на что:

$user = auth()->user()->load('profile'); 
$profile = $user->profile; 

return view('client.profil', compact('profile')); 
+0

я получил эту ошибку вызова функции члена addEagerConstraints() на нуле – Hanik

+0

@Hannik Это потому, что вы не 'return' из вашего' пользователя общественной функции() 'в вашей модели' Profile'. 'return $ this-> belongsTo ('App \ User');' – Ohgodwhy

+0

та же ошибка: вызов функции-члена addEagerConstraints() по нуле – Hanik

0

Я думаю, вы должны попробовать это ..

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Models\Profile as Profile; 
use App\Http\Requests; 
use Auth; 

class ClientController extends Controller 
{ 
    public function index() 
    { 
     $profile = Profile::where('user_id',Auth::user()->id)->first(); 
     return view('client.profil')->with($profile); 
    } 
} 
+0

i исправлено с этим :) спасибо за предложения :) – Hanik

+0

Поделитесь с вами ответами, так что другие будут получить помощь. Спасибо –

+0

Недостатки этого метода.1 Отношения, определенные в контроллере. Не переносимый код, идет против дизайнерской прагмы Laravel. Просто потому, что оно «работает» не означает, что оно правильно. Запомни. – Ohgodwhy

Смежные вопросы