Laravel 5原始选择查询不返回任何内容

时间:2017-05-20 15:01:56

标签: php mysql laravel laravel-5 mariadb

我正在尝试从数据库中检索数据,我需要将sql作为原始查询运行,这就是我的工作方式:

$var = Nuti::select(DB::raw("select name, image, info from nuti
  where name like '%:search_term%'"), array("search_term" => $term));

return $var;

$ var返回一个空数组但是当我尝试在mysql控制台中直接运行相同的查询时,它会返回两个记录。

[编辑]

当我发布这个问题时,我只是缩短了查询,对原始查询的需求是做更多这样的事情:

$var = Nuti::select(DB::raw("select name, image, info from nuti
  where name like '%:search_term%'") or info %like% '%:search_term%', array("search_term" => $term));

return $var;

4 个答案:

答案 0 :(得分:4)

您可以通过以下方式完成此操作。

$data = Nuti::select(['name', 'image', 'info'])->where('name', 'like', "%{$term}%")->get();

$data = Nuti::selectRaw('name, image, info')->where('name', 'like', "%{$term}%")->get();

$data = DB::table('users')->select(['name', 'image', 'info'])->where('name', 'like', "%{$term}%")->get();

$data = DB::table('users')->selectRaw('name, image, info')->where('name', 'like', "%{$term}%")->get();

$data = DB::select("select name, image, info from nuti where name like '%{$term}%'");

答案 1 :(得分:1)

您可能只需要添加 - > get();

$var = Nuti::select(DB::raw("select name, image, info from nuti
      where name like '%:search_term%'"), array("search_term" => $term))->get();

您可以使用以下方式进行调试:

$var = Nuti::select(DB::raw("select name, image, info from nuti
  where name like '%:search_term%'"), array("search_term" => $term))->toSql(); 
dd($var);

编辑:这个怎么样?

$var = Nuti::select(DB::raw("select name, image, info from nuti
      where name like '%:".$term."%'"))->get();

答案 2 :(得分:0)

如果您的查询对于查询构建器而言过于复杂,并且您希望从原始查询中获取模型集合,则可以使用hydrateRaw()

$var = Nuti::hydrateRaw(
    "select name, image, info from nuti where name like :search_term",
    array("search_term" => "%{$term}%")
);

答案 3 :(得分:0)

$var = Nuti::select(['name', 'image', 'info'])->where('name', 'like', "%{$term}%")->get();
return $var;

我认为这就是你所需要的。