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]); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |