简体   繁体   English

如何在 laravel DB::select 查询中传递 foreach

[英]How to pass foreach inside laravel DB::select query

I want to iterate through list of words broken down in a function processNeedle.我想遍历 function processNeedle 中分解的单词列表。 This is working fine with ordinary php but not in laravel.这适用于普通的 php 但不适用于 laravel。

    $query = $request->input('query');  

    $trim = new SearchTrim();

    $words = $trim->ProcessNeedle($query);


    $concat = "CONCAT(";        

     $concat.="title,";

    $concat.="'')";


    $sql =DB::select("SELECT DISTINCT id,title,code,abstract FROM projects WHERE 0 ";

    foreach ($words as $word) $sql.=" OR $concat LIKE '%$word%'";
    $sql.=" ORDER BY id DESC";

My query function well like this in php我的查询 function 在 php 中就像这样

SQL query: SELECT DISTINCT id,title,code FROM projects WHERE 0 OR CONCAT(title,'') LIKE '%intranet%' OR CONCAT(title,'') LIKE '%mailing%' ORDER BY id DESC;

How do i achieve this in Laravel Please help我如何在 Laravel 中实现这一点请帮助

Try this example.试试这个例子。 i hope it helps you.我希望它对你有帮助。

Pass foreach inside laravel DB::select query在 laravel DB::select 查询中传递 foreach

 $items = ['condition1', 'condition2', 'condition3']; $results = App\Model::where(function ($query) use ($items) { foreach($items as $item) { $query->orWhere('dbfield', 'LIKE', "%$item%"); } }) ->get(); dd($results);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM