Laravel 如何处理带括号或编码的位置?

Laravel 如何处理带括号或编码的位置?,laravel,eloquent,Laravel,Eloquent,我想用自由文本进行过滤,这意味着用户可以键入任何他们想过滤的内容。所以,当用户输入我在下面输入的内容时。所以,我想按照这个逻辑过滤它们 Free text = "abc def,ghi jkl" ... AND ( (report.name like '%abc%' AND report.name like '%def%') OR (bom_functions.name like '%abc%' AND bom_functions.name li

我想用自由文本进行过滤,这意味着用户可以键入任何他们想过滤的内容。所以,当用户输入我在下面输入的内容时。所以,我想按照这个逻辑过滤它们


Free text = "abc def,ghi jkl"
...
AND
(
    (report.name like '%abc%'  AND report.name like '%def%')
    OR
    (bom_functions.name like '%abc%'  AND bom_functions.name like '%def%')
    OR
    (report.name like '%ghi%' AND report.name like '%jkl%')
    OR
    (bom_functions.name like '%ghi%' AND bom_functions.name like '%jkl%')
)

有人能帮我吗

试试下面的代码,它应该可以工作

$model->where(function ($query) {

        return $query
            ->where(function ($a) {
                return $a
                    ->where('report.name', 'like', '%abc%')
                    ->where('report.name', 'like', '%def%');
            })
            ->orWhere(function ($b) {
                return $b
                    ->where('bom_functions.name', 'like', '%abc%')
                    ->where('bom_functions.name', 'like', '%def%');
            })
            ->orWhere(function ($c) {
                return $c
                    ->where('report.name', 'like', '%abc%')
                    ->where('report.name', 'like', '%def%');
            })
            ->orWhere(function ($d) {
                return $d
                    ->where('bom_functions.name', 'like', '%ghi%')
                    ->where('bom_functions.name', 'like', '%jkl%');
            });
    });

我没有正确理解你的问题,但我认为这可以帮助你。 您可以在Laravel中使用
或where

$freetext = "abc def,ghi jkl"
....
where(function ($query) use ($freetext) {
   $query->orWhere('report.name', 'LIKE', '%' . $freetext . '%')
         ->orWhere('bom_functions.name', 'LIKE', '%' . $freetext . '%')
}

请把你的问题再详细一点。你的问题非常模糊。先生,@AhmadKarimi我已经更新了我的问题。你能检查一下吗?