这个关联关系看不懂啊?

问答 forever123 ⋅ 于 1周前 ⋅ 最后回复由 forever123 1周前 ⋅ 53 阅读

如:Province为省份,City为城市,下面是关联关系
$a = Province::find(1)->City;
$b = Province::find(1)->City->get();
$c = Province::find(1)->City();
$d = Province::find(1)->City()->get();

dd($a,$b,$c,$d);
我打印出的结果很是迷惑,望指点?

本文章首发在 Laravel China 社区
成为第一个点赞的人吧 :bowtie:
最佳答案
  • DavidNineRoc 当神不再是我们的信仰,那么信仰自己吧,努力让自己变好不辜负自己的信仰... 1
    1周前

    你不说明它们的关系,我暂且认为 City 返回的是一个集合,如果是一对多的关系,我建议你把 City 方法改成 cities,这样更能看出它们之间的关系。

    // 返回省份 ID 为 1 下的所有城市
    $a = Province::find(1)->City;
    // 抱歉,没有这个方法。有的是,需要在一个 offset Province::find(1)->City->get(1);
    $b = Province::find(1)->City->get();
    // 返回省份 ID 为 1  的一个 HasMany 对象,之后你可以执行查询构造器
    $c = Province::find(1)->City();
    // 顺便说一下,如果不带条件的,这两个是相等的。
    Provvince::find(1)->City()->get() === Province::find(1)->City
    $d = Province::find(1)->City()->get();
    // 其实最主要的是,你知道当前操作返回的是什么类型,你就知道为什么了。
回复数量: 2
  • DavidNineRoc 当神不再是我们的信仰,那么信仰自己吧,努力让自己变好不辜负自己的信仰... 1
    1周前

    你不说明它们的关系,我暂且认为 City 返回的是一个集合,如果是一对多的关系,我建议你把 City 方法改成 cities,这样更能看出它们之间的关系。

    // 返回省份 ID 为 1 下的所有城市
    $a = Province::find(1)->City;
    // 抱歉,没有这个方法。有的是,需要在一个 offset Province::find(1)->City->get(1);
    $b = Province::find(1)->City->get();
    // 返回省份 ID 为 1  的一个 HasMany 对象,之后你可以执行查询构造器
    $c = Province::find(1)->City();
    // 顺便说一下,如果不带条件的,这两个是相等的。
    Provvince::find(1)->City()->get() === Province::find(1)->City
    $d = Province::find(1)->City()->get();
    // 其实最主要的是,你知道当前操作返回的是什么类型,你就知道为什么了。
  • forever123
    1周前

    @DavidNineRoc 多谢你完美的解释

暂无评论~~
您需要登陆以后才能留下评论!

Composer 中国全量镜像

Top 100 扩展包

Lumen 中文文档

Laravel 速查表

Laravel 中文文档

Laravel 项目开发规范

Laravel 开发环境部署

Elasticsearch-PHP 中文文档

Lumen 中文文档

GraphQL PHP 中文文档

社区文档撰写指南

TDD 构建 Laravel 论坛笔记

PHP PSR 标准规范

PHP 设计模式全集

Dingo API 中文文档