php - 使用 substr 作为 Laravel 控制器上的数据库列之一
问题描述
我正在尝试将 substr 用于表中的列之一。但是,它返回此错误:Method Illuminate\Support\Collection::raw does not exist.
我的控制器在这里:
public function search(Request $request)
{
$q = $request->q;
if ($q !== null && trim($q) !== ""){//here
$estates = \DB::table('estates')
->where("name","LIKE", "%" . $q . "%")
->orWhere("address","LIKE", "%" . $q . "%")
->orWhere("company_name","LIKE", "%" . $q . "%")
->orderBy('price')->get()
->raw(substr('address', 1, 4))->get();
if(count($estates) > 0){
return view("search", compact('estates'))->withQuery($q);
}
}
$estates = array();
return view("search", compact('estates'))->withMessage("No Found!");
}
我认为这条线不太管用?raw(substr('address', 1, 4))->get();
任何想法来解决这个问题?谢谢!
解决方案
您不能->raw()
用作函数,因为它根本不存在。根据您的查询,您希望select
从Address
. 在这种情况下,你会使用这样的东西:
$estates = \DB::table('estates')
->where("name","LIKE", "%" . $q . "%")
->orWhere("address","LIKE", "%" . $q . "%")
->orWhere("company_name","LIKE", "%" . $q . "%")
->orderBy('price')->get()
->select(
'states.*',
\DB::raw('SUBSTR(`address`, 1, 4) as short_address')
)->get();
并像这样访问它:
$estates->first()->short_address
推荐阅读
- node.js - DynamoDB getItem 调用未给出响应
- javascript - 如何增加 React.js 中的嵌套更新限制?
- sql - 使用 WHEN 语句检查 SQL 值时出现问题
- c# - ASP.NET Core 迁移到 Core 3.0:迁移警告 CS0618 'RazorViewAttribute' 已过时
- tensorflow - 一个奇怪的错误-----InvalidArgumentError: slice index -1 of dimension 0 out of bounds.()
- python - 如何将值从一个类返回到另一个类?
- python - 消费者:无法连接到 amqp://dfmngfek:**@salamander.rmq.cloudamqp.com:5672/dfmngfek:[Errno 104] 连接被对等方重置
- swift - 如何在 Catalyst 中使用 NSSharingService?
- php - 通过 PHP 从 CSV 文件中删除特定行
- reactjs - 构建 Ionic 4 启动画面,没有做任何事情(不起作用)