В Laravel, при использовании отношения belongsTo
в модели, обращение по нескольким полям можно осуществить с помощью метода where
в связи с использованием анонимных функций.
Предположим, у вас есть две модели: User
и Address
. Связь между ними - один к одному, где у пользователя есть несколько адресов, и для каждого адреса указывается main_city
и street
.
Чтобы обратиться к модели User
по двум полям (main_city
и street
) модели Address
, вы можете сделать следующее:
class Address extends Model { public function user() { return $this->belongsTo(User::class, function ($query) { $query->where('main_city', $this->main_city) ->where('street', $this->street); }); } }
Таким образом, при обращении к связи user
у модели Address
, Laravel будет выполнять запрос, чтобы найти пользователя, у которого поле main_city
соответствует значению main_city
в модели Address
, и поле street
соответствует значению street
в модели Address
.
Не забудьте также добавить обратное отношение в модель User
для связи:
class User extends Model { public function address() { return $this->hasOne(Address::class); } }
Таким образом, вы можете обратиться к модели User
по нескольким полям модели Address
с использованием отношения belongsTo
и метода where
в Laravel.