我正在尝试从数据库中检索数据,我需要将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;
答案 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;
我认为这就是你所需要的。