Как я могу добавить предложение where в отношение Laravel? - PullRequest
0 голосов
/ 05 июля 2018

Вот моя модель:

namespace App;

use Illuminate\Database\Eloquent\Model;

class purchase_order extends Model
{
    protected $table = "purchase_order";
    public $timestamps = false;

    public function commodities()
    {
        return $this->hasMany(commodities::class, 'purchase_order_id', 'id');
    }

}

Теперь мне нужно добавить еще одно условие в метод commodities(). На самом деле я должен сказать, что возвращают commodities, которые имеют это where('commodities.invoiced', 1). Как я могу добавить это условие where в отношение?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы можете сделать это, но со ссылкой на таблицу отношений следующим образом:

public function commodities()
{
    return $this->hasMany(commodities::class, 'purchase_order_id', 'id')
        ->where('commodities.invoiced', 1);
}

Когда запрос строится, он учитывает также commodities.invoiced, где запрос

Ссылка: https://laraveldaily.com/filter-eloquent-relationships-fly-need/

0 голосов
/ 05 июля 2018

Лучшим подходом для этого было бы добавить область запроса invoiced() к вашей Commodities модели.

https://laravel.com/docs/5.6/eloquent#query-scopes

Итак, на вашей Commodities модели вы можете добавить:

public function scopeInvoiced($query){
    return $query->where('invoiced', 1);
}

затем вызовите это с Commodities->invoiced();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...