加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 与Eloquent的多级别hasManyThrough关系

发布时间:2020-12-13 22:23:08 所属栏目:PHP教程 来源:网络整理
导读:我在我的 PHP应用程序中使用Eloquent并且与hasManyThrough关系苦苦挣扎. 这是我的结构: Company id nameAdmin id company_id nameOffer id admin_id nameApplication id offer_id candidat_id 每个管理员都是公司的一部分,可以发布要约,候选人可以根据该要
我在我的 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 StaudenmeirEloquentHasManyDeepHasRelationships;

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读