我在Laravel中使用RAW查询。因为使用查询构建器或使用Eloquent看起来有点复杂。
我正在查询1个人的数据库,通过使用他名字的地方。 返回的结果是一个数组,其中包含一个对象.. (见截图)
return $data['person'] = DB::select(DB::raw($person))[0];
这给了我以下错误:
Response内容必须是实现__toString(),“object”的字符串或对象。
return $data['person'] = DB::select(DB::raw($person))->first();
告诉我,首先不适用于这种查询..
SELECT nickname, firstname, lastname, age, title, photo, companies.name, cities.name, trickshot
FROM persons
JOIN companies ON companies.id = persons.company_id
JOIN cities ON cities.id = companies.city_id
WHERE CONCAT(firstname, lastname) = '{$fullname}' AND cities.name = '{$city}'
谢谢!
答案 0 :(得分:1)
这就是你在Eloquent中的表现,假设Person
是你需要的模型:
Person::select( ... , 'comp.name as company', 'cit.name as city')
->join('companies as comp', 'comp.id', '=', 'persons.company_id')
->join('cities as cit', 'cit.id', '=', 'comp.city_id')
->where('cit.name', $city)
->where(DB::raw('concat(firstname, lastname)'), $fullname)
->first();
如果您需要更频繁地使用此数据集,那么我将为此创建一个DB视图。