показать данные из 2 таблиц laravel 6

#php #laravel #eloquent #foreign-keys #show

#php #laravel #красноречивый #внешние ключи #показать

Вопрос:

У меня проблема с отображением данных из 2 таблиц с идентификатором в laravel 6. Мои таблицы — «пользователи» и «компании».

Пользователи

 id
name
last name
 

компании

 id
company
address
id_user
 

Модель пользователя

 public function company()
{
    return $this->hasOne('AppCompany','id_user','id');
}
 

Модельная компания

 public function user()
{
    return $this->belongsTo('AppUser');
}
 

Контроллер

 public function show($id)
    {
       $companies = Company::with('user')->find($id);
       return view('clients.show', compact('companies'));

}
 

Вид

$companies->компания

но проблема в том, что не отображаются данные из таблицы пользователей, может кто-нибудь мне помочь?

Комментарии:

1. У меня здесь есть несколько вопросов. Во-первых, в представлении у вас есть переменная $companies, хотя ваш запрос вернет одну компанию, и вы получаете доступ к атрибуту company, который, как я полагаю, является строкой, подобной названию компании? Во-вторых, я предполагаю, что у компании может быть много пользователей, поэтому вы можете захотеть назвать эти отношения пользователями, и поэтому эти отношения должны возвращать hasMany . Поэтому обратная связь company в пользовательской модели должна возвращать значение belongsTo.

Ответ №1:

Имя внешнего ключа для пользователя в таблице companies должно быть ‘user_id’, а не ‘id_user’, Если вы хотите использовать пользовательское имя столбца, убедитесь, что вы передаете его второму аргументу отношения. Модельная компания:

 public function user()
{
    return $this->belongsTo('AppUser', 'id_user');
}