Laravel Красноречивое состояние отношений - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть две модели в Laravel: Article and Relatedproduct.

Класс изделия

public function related_products()
{
    return $this->hasMany(\App\Models\ArticleProduct::class, 'article_id', 'id');
}

ArticleProduct класс

public function related_product()
{
    return $this->belongsTo(\App\Models\Product::class, 'product_id', 'id');
}

Я получил Статью и хочу получить related_products, где статус установлен как 1.

Я смог получить их как следующий код

foreach ($article->related_products as $i => $product) {
    if ($product->related_product->status == 1) {
        array_push($related_tour, $product->related_product);
    }
}

есть лучший способдостичь этого?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Попробуйте это:

public function relatedTours()
{
    return $this->belongsTo(\App\Models\Product::class, 'product_id', 'id')
        ->where('status', 1);
}

В вашей логике:

$article->relatedTours
0 голосов
/ 28 декабря 2018

Вы также можете использовать предложение ->where с принадлежностью, например.

public function related_product()
{
    return $this->belongsTo('App\Models\Product', 'product_id', 'id')
        ->where('status', true);
}

Пожалуйста, попробуйте это и дайте мне знать, как это работает :)

...