Laravel DB :: RAW取单

时间:2014-10-10 09:23:38

标签: php mysql laravel eloquent query-builder

我在Laravel中使用RAW查询。因为使用查询构建器或使用Eloquent看起来有点复杂。

我正在查询1个人的数据库,通过使用他名字的地方。 返回的结果是一个数组,其中包含一个对象..  (见截图)

enter image description here

我怎么才能得到第一个结果?我试过

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}'

谢谢!

1 个答案:

答案 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视图。