2014-01-13 3 views
0

Как я могу получить все данные из своих таблиц с отношениями в Laravel?Laravel Eloquent все с отношениями

Итак, у меня есть таблица, как:

*users* 
id 
username 
password 
... 

*address* 
id 
address 
user_id 
... 

Если я называю мою красноречивая модель с адресом :: все() Я получаю ответ с user_id, и я хочу, чтобы сделать отношения для получения имени пользователя.

Я пытаюсь добавить:

public function users(){ 
    return $this->belongsTo('Users', 'user_id'); 
} 

и призови с Address::with('users')->get(), но ответ пуст.

ответ

4

Является ли ваш пользовательский класс Users или User? Если вы не измените его, путь по умолчанию, Красноречивые сделки с именами можно найти в документации (source):

Обратите внимание, что мы не сказали красноречивые, какой стол, чтобы использовать для нашей модели пользователя. Имя в нижнем регистре, множественное имя класса будет использоваться в качестве имени таблицы, если явно не указано другое имя. Таким образом, в этом случае Eloquent будет считать, что модель User хранит записи в таблице users. Вы можете указать пользовательскую таблицу, определив свойство таблицы на вашей модели

Так что я верю, что если вы измените свой код в модели Адрес для:

public function users(){ 
    return $this->belongsTo('User', 'user_id'); 
} 

он будет работать, так как мы изменили Users к User

0

Альтернативный способ!

class Users extends Model { 
    //override table 
    protected $table = 'users'; 
    protected $primaryKey = 'id'; 
    //Your other code here 
} 

и в адресной модели добавить как этот

public function users(){ 
    return $this->belongsTo('App\Users', 'user_id'); 
} 
0

Вы должны изменить

public function users(){ 
    return $this->belongsTo('Users', 'user_id'); 
} 

в

public function users(){ 
    return $this->hasOne(Users::class, 'user_id'); 
} 

или

public function users(){ 
    return $this->hasMany(Users::class, 'user_id'); 
} 
Смежные вопросы