Laravel Eloquent 自定义返回字段

更新日期: 2019-06-22 阅读次数: 3799 字数: 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 聊聊。 白天工地搬砖,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

爱评论不评论

近期节日

2020年02月24日 第三世界青年日
2020年02月24日 龙抬头
2020年02月28日 世界居住条件调查日
2020年03月01日 国际海豹日
2020年03月03日 全国爱耳日
2020年03月05日 学雷锋日
2020年03月05日 惊蛰
2020年03月08日 三八妇女节
2020年03月12日 植树节
2020年03月14日 白色情人节
2020年03月15日 消费者权益日
2020年03月17日 国际航海日
查看更多节日