Laravel - условие по отношению - PullRequest
0 голосов
/ 12 ноября 2018

Я использую Laravel 5.6, у меня 3 модели:

  • Площадь
  • Магазин
  • Торговец

Площадь имеет множество Магазины :

public function stores()
{
    return $this->hasMany('Beproxy\App\Models\Store');
}

Магазин принадлежит одному Торговцу :

public function merchant()
{
    return $this->belongsTo('Beproxy\App\Models\Merchant');
}

В моем Торговце у меня есть один tinyInt, чтобы определить, активен Торговец или нет ( состояние )

Могу ли я написать новую функцию в моей области модели, чтобы получить все магазины , принадлежащие активному торговцу ?

С отношением hasMany я могу использовать:

public function storesWithProducts()
{
    return $this->hasMany('App\Models\Store')->has('products');
}

Но я не могу найти, как использовать условие для , принадлежащего , я пробовал в своей области , но он загружает все:

public function storesWithMerchantActive()
{
    return $this->hasMany('App\Models\Store')
        ->with(['merchant' => function($query) {
            $query->where('state', '=', 1);
        }])
        ->has('products');
}

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Вам не нужно использовать другое отношение для этого.Вы можете использовать whereHas в storeWithProducts и проверить, активен ли продавец, как показано ниже:

public function storesWithMerchantActive()
{
    return $this->storesWithProducts->whereHas('merchant', function ($query) {
        $query->where('state', 1);
    })->get();
}
0 голосов
/ 12 ноября 2018

Я думаю, вам просто нужно обновить эту функцию, может помочь.

public function merchant()
{
    return $this->belongsTo('Beproxy\App\Models\Merchant')
    ->where('state','1');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...