Php Laravel口若悬河,在哪里或哪里工作不好
我一直在用这些表创建连接,并急切地加载它们Php Laravel口若悬河,在哪里或哪里工作不好,php,laravel,eloquent,Php,Laravel,Eloquent,我一直在用这些表创建连接,并急切地加载它们 交易(交易详细信息的父项) 事务详细信息(事务的子项和Mutasi_日志的父项) Mutasi_日志(事务详细信息的子项) 然后我添加了一些过滤器,例如: 仅显示我的数据(已登录用户创建的数据) 仅显示我的saldo 仅显示我的金额 我尝试过这个代码 blahlblah..... ->where('created_by',Auth::id()) ->orWhere('amount','LIKE','%'.$search.'%')
blahlblah.....
->where('created_by',Auth::id())
->orWhere('amount','LIKE','%'.$search.'%')
->orWhere('saldo','LIKE','%'.$search.'%'))
但在这里,当填充搜索字段时,条件不正常(显示其他用户的数据,如我的saldo和amount)
以下是输出:
下面是我的完整代码:
MutasiLog::with([
'transaction_detail.transaction',
])
->orWhereHas('transaction_detail', function (&$q) use ($search) {
$q->where('id', 'like', '%' . $search . '%');
$q->orWhereHas('transaction',function($q) use ($search){
$q->where('description','LIKE','%'.$search.'%');
});
})
->where('created_by',Auth::id())
->orWhere('amount','LIKE','%'.$search.'%')
->orWhere('saldo','LIKE','%'.$search.'%')
->offset($start)
->limit($limit)
->orderBy($order,$dir)
->get();
当使用orWhere并与其他where链接时,您的意思是:在我创建的位置或where amount(如搜索)获取数据,这就是为什么要获取所有数据的原因,因此解决方案应将搜索或where分组到单个位置,如下所示:
->where('created_by',Auth::id())
->where(function($query){
$query->orWhere('amount','LIKE','%'.$search.'%')->orWhere('saldo','LIKE','%'.$search.'%')
})
在文档中,“您应该始终对orWhere调用进行分组,以避免在应用全局作用域时出现意外行为。”。你可以找到一个例子。所以你可以这样做:
// blahlblah.....
->where(function ($query) use ($search) {
$query->where('created_by',Auth::id())
->orWhere('amount','LIKE','%'.$search.'%')
->orWhere('saldo','LIKE','%'.$search.'%');
})
// ...
或者,这取决于您的需要:
// blahlblah.....
->where('created_by',Auth::id())
->where(function ($query) use ($search) {
$query->where('amount','LIKE','%'.$search.'%')
->orWhere('saldo','LIKE','%'.$search.'%');
})
// ...
在文档中,“您应该始终对orWhere调用进行分组,以避免在应用全局作用域时出现意外行为。”。你可以找到一个解决的例子-谢谢你:D。。。你能回答你的意见吗?