Php Laravel 4雄辩的ORM高级关系

Php Laravel 4雄辩的ORM高级关系,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,欢迎所有工匠 我正在寻找解决关系的最佳实践,如下表所示: 餐桌公司 桌杆 桌柱 我如何定义与eloquent的关系,以便从特定的“公司”中选择所有“职位”。我可以在“posts”表中声明额外的“company_id”列作为解决方法 但我们能否用雄辩来选择类似的例子: $posts = Post::where('staff_id', IN, COMPANY_ID)->get(); 提前感谢编辑: 我似乎误解了这个问题,您可以像这样加载嵌套关系: $company = Company::fi

欢迎所有工匠

我正在寻找解决关系的最佳实践,如下表所示:

餐桌公司 桌杆 桌柱 我如何定义与eloquent的关系,以便从特定的“公司”中选择所有“职位”。我可以在“posts”表中声明额外的“company_id”列作为解决方法

但我们能否用雄辩来选择类似的例子:

$posts = Post::where('staff_id', IN, COMPANY_ID)->get();
提前感谢

编辑: 我似乎误解了这个问题,您可以像这样加载嵌套关系:

$company = Company::find(COMPANY_ID)->with('staff.posts')->get();
然后,您可以在它们之间循环:

foreach($company->staff() as $staff)
{
     foreach($staff->posts() as $post)
     {
         echo $post->content;
     }
}
但这两种关系都需要定义

// models/company.php
public function staff()
{
   return $this->hasMany('Staff');
}

编辑: 我似乎误解了这个问题,您可以像这样加载嵌套关系:

$company = Company::find(COMPANY_ID)->with('staff.posts')->get();
然后,您可以在它们之间循环:

foreach($company->staff() as $staff)
{
     foreach($staff->posts() as $post)
     {
         echo $post->content;
     }
}
但这两种关系都需要定义

// models/company.php
public function staff()
{
   return $this->hasMany('Staff');
}


最后,Laravel4.1提供了名为hasManyThrough的特性!霍瑞


最后,Laravel4.1提供了名为hasManyThrough的特性!霍瑞


您好,您提到的模型关系问题不起作用,因为posts表没有公司id,只有员工id。没有任命,我很高兴您了解我的问题:好的,第二种方法只能获得公司员工,但不属于公司的posts…谢谢,但这是文档中的常用方法。对于我的情况,我会有意见,需要得到所有职位属于一个公司,上述解决方案并不理想,如果需要应用排序的职位/您好,您提到的模型关系问题不起作用,因为posts表没有公司id,只有员工id。没有任命,我很高兴您了解我的问题:好的,第二种方法只能获得公司员工,但不属于公司的posts…谢谢,但这是文档中的常用方法。对于我的情况,我会有意见,需要得到所有职位属于一个公司,上述解决方案并不理想,如果需要应用排序的职位/
// models/staff.php
public function posts()
{
   return $this->hasMany('Post');
}