向大家致以問候。Laravel ManyToMany馬上加入條件
如何在Laravel 5.3中爲belongsToMany(多對多)關係添加條件以「加入」?
例如,假設這裏有產品和具有多對多關係的產品的參數。當我想要獲取特定產品的所有參數時,它就好了。我做$product->parameters
,它給我什麼,我需要這樣的查詢:當我想定義的參數一些「全球通」標誌,它定義了參數應綁定到每一個產品
SELECT
parameters.*,
product_parameters.product_id AS pivot_product_id,
product_parameters.parameter_id AS pivot_parameter_id
FROM parameters
INNER JOIN product_parameters ON parameters.id = product_parameters.parameter_id
WHERE product_parameters.product_id = 1;
問題出現。與普通的SQL,所有我需要做的就是加入條件的加入,OR parameters.global = 1,像這樣:
SELECT
parameters.*,
product_parameters.product_id AS pivot_product_id,
product_parameters.parameter_id AS pivot_parameter_id
FROM parameters
INNER JOIN product_parameters ON parameters.id = product_parameters.parameter_id OR parameters.global = 1
WHERE product_parameters.product_id = 1;
但我沒有找到,如果有做正確的清潔方式它與Laravel能夠從我需要的額外數據中獲得Eloquent \ Relation對象的功能。
我發現「壞」的方式,這是「獲取」我想從查詢生成器對象需要的連接,並添加另一個「其中」,但它是非常醜陋的,我不知道它會工作在未來沒有問題。
這就是我試圖做的,它幾乎工作(有PDO參數的數量不正確的問題,但它產生的SQL,我需要):
$relation = $this->belongsToMany(Parameter::class, 'product_parameters');
$relation->getQuery()->getQuery()->joins[0]->where('parameters.definition', '=', 0, 'or');
任何幫助或建議表示讚賞。謝謝。