Как правильно построить отношение Laravel

311
01 ноября 2017, 04:13

Упрощенная структура (основные поля для понимания):

AppUsers
 -id
 -nik_name
Bans
-id
-nik_name
Notes
-id
-nik_name

Строю так:

class AppUser extends Model
{
public function ban()
{
    return $this->hasOne('App\Ban','nik_name','nik_name');
}
public function note(){
    return $this->hasOne('App\Note','nik_name','nik_name');
}
}

Не могу понять как в контроллере вызвать сразу обе связи. По одной получается:

 $userApp = AppUser::with('ban')->find($id);

А как сразу обе сразу связать - не понимаю.

Answer 1

Я бы рекомендовал делать связи по id пользователя. Если же вы конечно, точно уверенны что поле nik_name уникально и есть соответствующая проверка.

Например добавьте поле в таблицу Bans - 'appUsers_id' чтобы не явно связать данную таблицу с таблицей Bans.

Вот примеры для связей:

AppUsers
-id
-nik_name
Bans
-id
-appUsers_id
-nik_name
Notes
-id
 -appUsers_id
-nik_name

Отношение тут же будет еще проще:

public function ban()
{
    return $this->hasOne(Ban::class);
}
public function note(){
    return $this->hasOne(Note::class);
}

Для связи пробуйте вызвать запрос с хелпером with:

$query = AppUsers::with('ban', 'note')->get();
READ ALSO
Рекурсивный обход xml средствами php

Рекурсивный обход xml средствами php

Всем здравствуйте! Следующая задачаЕсть неважно какой xml файл, но будем рассматривать на примере этого:

1081
Payum: установить свой url для capture

Payum: установить свой url для capture

Я пытаюсь использовать Payum для приёма платежей на сайте

292