使用模型关联查询地址,如何取到地址信息里面的值

这是我的laravel模型代码

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class EduCourse extends Model
{
    // 获取分页的课程列表
    public static function getListOfPage(){
        return self::with('country')->paginate();
    }
    // 课程表关联国家的id
    public function country(){
        return $this->belongsTo('App\Models\EduDistrict');
    }
}

查询后,这是输出的列表的部分数据

city_id: 2133
country: {id: 1, name: "中国", level: 1, parent_id: 0, showOrder: 0, code: ""}
code: ""
id: 1
level: 1
name: "中国"
parent_id: 0
showOrder: 0
country_id: 1
course_cate_id: 11

发现这里的country是一个json字符串,我想直接取到里面的name字段的中国的值。该怎么办

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

总结一下。两种方式,筛选字段。
方式一:

    // 获取分页的课程列表
    public static function getListOfPage(){
        return self::with('country:id, name')->paginate();
    }

方式二:

    // 课程表关联国家的id
    public function country(){
        return $this->belongsTo('App\Models\EduDistrict')->select('id', 'name');
    }

结论就是,无法直接去到里面的某一个的值。只能对取得的结果值进行筛选,但是改变不了关联模型查询的数据类型。关联的模型查询的数据结果,一定是一个json值,即便是不填写id,单独的一个name的值,也是json类型的值。

5年前 评论
讨论数量: 14
liuhuo

file
不知道这个是否是你需要的

5年前 评论

@cloud_w
这个是已经出来结果了。再处理的,我希望在查询的那个过程中,能做控制的

5年前 评论

还有一种方式,是在关联的时候,对结果字段进行筛选的,但是筛选的字段必须带有id字段。

    // 课程表关联国家的id
    public function country(){
        return $this->belongsTo('App\Models\EduDistrict')->select('id', 'name');
    }
5年前 评论
liuhuo

你可以在查询的时候这么做

file

5年前 评论

@houxin 曾经吃过做筛选忘了把关联的字段带出来的的亏:smile:

5年前 评论

@cloud_w 5.5没有这个语法了。

5年前 评论

@cloud_w :smiley: 我看错了确实有。

5年前 评论

@cloud_w
这种筛选的东西,还是需要再进一步取值的。我想直接对应上里面的值。

5年前 评论
liuhuo

@houxin 循环调用就可以了啊

5年前 评论

转成数组不就行了,然后直接取

5年前 评论

@cloud_w 目前是这样处理的,就是不知道还有没有比较好的办法的

5年前 评论

发现也可以这样指定

   // 获取分页的课程列表
    public static function getListOfPage(){
        return self::with('country:id, name')->paginate();
    }

这个时候,id必须存在的。
但是无论怎么指定,都不能只去到其中一个值的。也就是说,结果集合必须是个json值的

5年前 评论

总结一下。两种方式,筛选字段。
方式一:

    // 获取分页的课程列表
    public static function getListOfPage(){
        return self::with('country:id, name')->paginate();
    }

方式二:

    // 课程表关联国家的id
    public function country(){
        return $this->belongsTo('App\Models\EduDistrict')->select('id', 'name');
    }

结论就是,无法直接去到里面的某一个的值。只能对取得的结果值进行筛选,但是改变不了关联模型查询的数据类型。关联的模型查询的数据结果,一定是一个json值,即便是不填写id,单独的一个name的值,也是json类型的值。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!