2017-02-14 10 views
0

Я создаю таблицы с отношением OneToMany. Две таблицы: Malls и Shops. Каждый Mall может иметь много Shop, но проблема в том, что каждый Shop необязательно относится к группе Mall. Это может быть отдельный магазин.Установить отношение OneToMany в Laravel с исключением по отношению

Когда я звоню App\Shop::first()->mall, если магазин не принадлежит к Mall, он вернет null или выдает исключение или ошибку?

Как это возможно в Красноречии?

+1

Это то, чему вы могли бы научиться, просто пытаясь понять, что происходит. Eloquent возвращает NULL, так как никакой торговый центр, связанный с Магазином, не был найден. – lucasvscn

ответ

1

Давайте разобраться в вашей ситуации. У вас есть модель торгового центра и магазин. Один торговый центр может иметь несколько магазин, в то время как магазин может принадлежать или не принадлежать к молл

Вот код Mall Модель

public function shop() { 
    return $this->hasMany(Shop::class); 
} 

Вот код для Магазин Модель

public function mall(){ 
    return $this->belongsTo(Mall::class); 
} 

Это будет выполняйте свое требование. Всякий раз, когда магазин не принадлежит ни одному торговому центру, он возвращает null, а не ошибку.

1

При доступе к App \ Shop :: первый() -> центр, Красноречивым пытается загрузить связанную центр модель, используя значение, хранящееся в mall_id свойство вашего Shop. Если он содержит значение, связанный объект загружается, если он существует. Если нет, возвращается NULL. Если он не содержит никакого значения, то снова возвращается NULL, так как не может быть связанной записи с таким идентификатором.