Laravel Eloquent 自定义返回字段

更新日期: 2019-06-22 阅读次数: 17405 字数: 240 分类: Laravel

返回指定字段

Book::select("price", "name")->all();

返回关系字段关联的属性

Book::select("price", "name", "author_id")->with('author')->all();

注意,如果要返回关系字段的信息,一定要将对应的 id 字段加入到 select 中。否则关系字段会显示为 null.

返回关系字段关联的指定属性

Book::select("price", "name", "author_id")->with('author:id,name')->all();

eager load

With 这种写法,在 laravel 中称之为 eager load。

Eager:热切渴求的。

对应的,laravel eloquent 查询的默认行为为 lazy load, 即默认不返回关系字段的详细信息,即不进行 left join。

返回 SQL 公式的复杂字段

一定要使用 selectRaw !!!

用了 DB::raw 只能徒增烦恼:

各种错误

Invalid parameter number

Invalid parameter number: mixed named and positional parameters

用了 selectRaw 世界就清净了

$shops = User::selectRaw("
    id, store_name, tel, county_name,
    store_address, longitude, latitude,
    SQRT(
        POW(69.1 * (latitude - ?), 2) +
        POW(69.1 * (? - longitude) * COS(latitude / 57.3), 2)
    ) AS distance", [$latitude, $longitude]
)->where('city_id', $city_id)
    ->orderBy('distance', 'desc')
    ->get();

$filtered = $shops->filter(function ($shop, $key) {
    return $shop->hasRole('市级代理') || $shop->hasRole('区级代理');
});

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式