#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');
}