Получение данных с помощью hasOne в Laravel 5.6

Я хотел бы знать, как получить данные с помощью hasOne в laravel? Например, у меня есть таблица брендов и таблица продуктов, в которой есть столбец, содержащий идентификатор бренда, поэтому, если у продукта должен быть бренд, «hasOne» отлично работает с взаимосвязью двух таблиц, но что мне делать, если продукт не обязательно имеет бренд, тогда при добавлении продукта идентификатор бренда, хранящийся в базе данных, равен 0, и когда я делаю запрос в этой строке, laravel выдает мне ошибку.

Спасибо за Ваш ответ.


person Stian    schedule 19.06.2018    source источник
comment
В файле миграции для таблицы product убедитесь, что в столбец brand_id добавлено nullable().   -  person Douwe de Haan    schedule 19.06.2018


Ответы (1)


Если у товара нет торговой марки, вместо добавления 0 введите в базу данных NULL. Вам нужно будет изменить базу данных и добавить ->nullable() в столбец brand_id

Кроме того, кажется, что Product должен belongTo Brand вместо hasOne

Ваша модель Product должна выглядеть так:

class Product extends Model {

    public function brand() {
        return $this->belongsTo(Brand::class);
    }
}

И ваш Brand

class Brand extends Model {

    public function products() {
        return $this->hasMany(Product::class);
    }
}

Затем вы можете сделать следующее:

if($product->brand) {
    // product has brand
}
else {
    // product does not have brand
}
person H H    schedule 19.06.2018
comment
Спасибо! Я нашел решение: я забыл проверить, есть ли у продукта бренд, прежде чем наносить его на лезвие. - person Stian; 19.06.2018