laravel中如何在模型中自关联?

laravel中如何在模型中自关联?

https://segmentfault.com/q/1010000007926567

在模型中声明一对多的关系,关联表本身。parent_id对应父记录的id。我在sof中查阅到很多这样的写法:

public function belongsToParent(){
    return $this->belongsTo(self::class, "parent_id");
}

public function hasManyChildren(){
    return $this->hasMany(self::class, "parent_id");
}

但是我通过模型的with(‘belongsToParent’)查不到关系,parent_id有值,关联的relations却为null。请问这种写法是对的吗?为什么查不到关联模型呢?

 

belongsTo的用法和hasOne的效果是一样的,只是参数反过来。

public function parent()
{
    return $this->hasOne(get_class($this), $this->getKeyName(), 'parent_id');
}

public function children()
{
    return $this->hasMany(get_class($this), 'parent_id', $this->getKeyName());
}

ID  pid title
1   0   中国
2   1   广东省
3   2   广州市
4   2   深圳市
5   3   白云区

使用


$a = Tree::with(['children'])->find(2);
dd($a->children);
输出 广州市 深圳市

 

我考虑到你这可能只是基类,就好像我这个类一样,并不是直接用的,最好使用如下方法获取final的类名:

  • get_class($this)

  • static::class

因为 self 的意思是 __CLASS__,而非final的类

把self换成static试试

把self:class改成$this就对了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/112385.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • QThread类[通俗易懂]

    QThread类[通俗易懂]QThread类提供一种独立于平台的线程管理方式。翻译自官方文档(译者:Qt君)

  • Linux查看网卡带宽[通俗易懂]

    Linux查看网卡带宽[通俗易懂]ifconfig查看网卡信息执行命令:ethtool网卡名称,例:ethtooleth1输出内容如下:Settingsforeth1:Supportedports:[FIBRE]Supportedlinkmodes:1000baseT/Full10000baseT/FullSupportedpauseframeuse:Symmetr..

    2022年10月19日
  • 服务器配置[通俗易懂]

    服务器配置[通俗易懂]Nginx配置文件的整体结构从图中可以看出主要包含以下几大部分内容:1.全局块该部分配置主要影响Nginx全局,通常包括下面几个部分:配置运行Nginx服务器用户(组)workerpro

  • Jenkins学习三:介绍一些Jenkins的常用功能

    Jenkins学习三:介绍一些Jenkins的常用功能Jenkins一些常用的功能,如:备份和恢复jenkins、移动,删除或修改jobs、Jenkins启动时的命令行参数、修改jenkins的timezone、通过脚本启动jenkins、查看jenk

  • git命令–切换分支[通俗易懂]

    git命令–切换分支[通俗易懂]>我们在日常开发中,有时需要从github或者gitee上拉取新项目,但是拉取的那个项目可能有很多分支,然后本地拉取后只有一个默认分支(一般是master)。甚至可能只有一个readme.md文件。。 >如果我们想查看远程的其他分支该怎么办呢? **gitbranch**>首先进入项目根目录(有个.git文件的那个目录),执行`gitbranch`命…

  • DELPHI XE5开发WEB服务器及安卓手机客户端[通俗易懂]

    DELPHI XE5开发WEB服务器及安卓手机客户端[通俗易懂]Xe5开发web服务端和手机客户端时间:2013-9-1817:09:45点击: 6456Delphixe5作为最新开发利器,就类似如当年的DELPHI,功能强大,快发速度快,把VS2012远远甩在后面。下面以一个小例作为您开启新的历程: 建立一个webservices stand-alonevclapplication作为手机访问的服务端1、new-

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号