php – 与Eloquent的多级别hasManyThrough关系

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 与Eloquent的多级别hasManyThrough关系脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的 PHP应用程序中使用Eloquent并且与hasmanyThrough关系苦苦挣扎.

这是我的结构:

Company 
   id
   name

Admin
   id
   company_id
   name

Offer
   id
   admin_id
   name

Application
   id
   offer_id
   candidat_id

每个管理员都是公司的一部分,可以发布要约,候选人可以根据该要约提出申请.

我正在尝试获取已由该公司的管理员启动的所有应用程序.

我尝试在我的公司模型中使用hasManyThrough关系,如下所示:

public function applications()
{
    return $this->hasManyThrough("Application","Offer");
}

但是我收到以下错误

sqlstatE[42S22]: Column not found: 1054 UnkNown column 'offers.entrePRise_id' in 'field list' (sql: select `applications`.*,`offers`.`entreprise_id` From `applications` inner join `offers` on `offers`.`id` = `applications`.`offer_id` where `offers`.`entreprise_id` in (1))

这是有道理的,因为它认为要约被列入公司而不是管理员.

如何进行设置以便查找该公司的管理员,而无需获取公司的所有管理员,然后循环遍历它们,获取每个管理员的所有应用程序?

这可行,但当Eloquent提供这些让我们的生活更轻松的关系时,这似乎是一种乏味的做法.有没有更优雅的方式来实现我想要的?

解决方法

这种情况没有本机关系.

我创建了一个具有无限级别的HasManyThrough关系:Repository on GitHub

安装完成后,您可以像这样使用它:

class Company extends Model {
    use \Staudenmeir\EloquentHasManyDeep\HasRelationships;

    public function applications() {
        return $this->hasManyDeep(Application::class,[Admin::class,Offer::class]);
    }
}

脚本宝典总结

以上是脚本宝典为你收集整理的php – 与Eloquent的多级别hasManyThrough关系全部内容,希望文章能够帮你解决php – 与Eloquent的多级别hasManyThrough关系所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。