Laravel Eloquent 自定义返回字段

更新日期: 2019-06-22 阅读次数: 5375 字数: 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('区级代理');
});

爱评论不评论

近期节日

2020年10月01日 国庆节
2020年10月01日 中秋节
2020年10月04日 世界动物日
2020年10月08日 寒露
2020年10月09日 世界邮政日
2020年10月10日 辛亥革命纪念日
2020年10月13日 中国少年先锋队诞辰日
2020年10月14日 世界标准日
2020年10月15日 国际盲人节
2020年10月16日 世界粮食日
2020年10月17日 国际消除贫困日
2020年10月22日 世界传统医药日
查看更多节日