Laravel雄辩ORM语法中的多对多where_
我正在努力使用Laravel雄辩的ORM进行连接查询 我有两个类,它们有多对多的关系Laravel雄辩ORM语法中的多对多where_,laravel,eloquent,Laravel,Eloquent,我正在努力使用Laravel雄辩的ORM进行连接查询 我有两个类,它们有多对多的关系 class Type extends Eloquent { public function activities() { return $this->has_many_and_belongs_to('Activity'); } } class Activity extends Eloquent { public function types() {
class Type extends Eloquent
{
public function activities()
{
return $this->has_many_and_belongs_to('Activity');
}
}
class Activity extends Eloquent
{
public function types()
{
return $this->has_many_and_belongs_to('Type');
}
}
在我的数据库中有类型、活动和活动类型表
我正在尝试重新创建以下SQL查询
SELECT a . *
FROM activities a
JOIN activities_types at ON a.id = at.activities_id
WHERE at.type_id
IN ( 1, 2, 4 )
GROUP BY a.id
我只是还没有掌握ORM语法。我试过了
$activities=Activity::types()
但是我得到了一个错误“非静态方法Activity::types()不应该静态调用,假设$this来自不兼容的上下文”
感谢所有指针关系未定义为静态方法。因此,不能像
::type()
那样使用它们。此外,人际关系并不能给你想要的东西。因为您对“仅使用活动”列感兴趣,所以可以这样做:
$activities = Type::where_in("id", $types)->get()->activites()->group_by('id')->get();
另一方面,我认为您可以通过使用join来处理此问题:
$activites = Activity::select('activities.*')->join('activities_types','activities.id','=','activities_types.activities_id')->where_in('activities_types.type_id',$types)->group_by('activities.id')->get();
谢谢-我仍在摸索,但这是一个很大的帮助