【发布时间】:2017-07-18 09:31:46
【问题描述】:
我有以下 Eloquent 查询:
CustomerStore::restrictBasedOnSession()
->joinCustomerWhere([
["first_name", "like", "%$query%"],
["last_name", "like", "%$query%"],
["phone", "like", "%$query%"]
])
->joinAddressWhere([
["postcode", "like", "%$query%"]
])
->get([
'customers.id as id',
'customers.first_name as firstname',
'customers.last_name as lastname',
'customers.phone as phone',
]);
具有以下作用域
public function scopeJoinCustomerWhere($query, $array)
{
$query->leftJoin('customers', 'customers.id', '=', 'customer_store.customer_id');
foreach ($array as $clause) {
$query->orWhere('customers.' . $clause[0], $clause[1], $clause[2]);
}
return $query;
}
public function scopeJoinAddressWhere($query, $array)
{
$query->leftJoin('customer_addresses', 'customer_addresses.customer_id', '=', 'customer_store.customer_id');
foreach ($array as $clause) {
$query->orWhere('customer_addresses.' . $clause[0], $clause[1], $clause[2]);
}
return $query;
}
public function scopeRestrictBasedOnSession($query)
{
return $query->where('store_id', '=', config('app.config.id'));
}
我的问题是,当我为上述 Eloquent 查询转储查询时,我的 SQL 是
选择customers.id为id,customers.first_name为firstname,customers.last_name为lastname,@9876543332@@。作为phone
来自customer_store
左加入customerscustomers.id = customer_store.customer_id
left join customer_addresses on customer_addresses.customer_id = customer_store.customer_id
在哪里
store_id = 1 和
(customers.first_name like '%e%' or customers.last_name like '%e%' or customers.phone like '%e%') AND (customer_addresses.@ 987654354@ like '%e%') 和
customer_store.deleted_at 为空
我正在努力改变
在哪里
store_id = 1 和
(customers.first_name like '%e%' or customers.last_name like '%e%' or customers.phone like '%e%') AND (customer_addresses.@ 987654365@ like '%e%') 和
customer_store.deleted_at 为空
到
在哪里
store_id = 1 和
(customers.first_name like '%e%' or customers.last_name like '%e%' or customers.phone like '%e%') 或者 (customer_addresses.@ 987654376@ like '%e%') 或
customer_store.deleted_at 为空
具体来说,当我跨多个表执行 where 时,我不希望表之间的条件是 AND,我需要它是 OR。
如果有人有任何建议,我将不胜感激
【问题讨论】: