Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel雄辩ORM语法中的多对多where__Laravel_Eloquent - Fatal编程技术网

Laravel雄辩ORM语法中的多对多where_

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() {

我正在努力使用Laravel雄辩的ORM进行连接查询

我有两个类,它们有多对多的关系

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();

谢谢-我仍在摸索,但这是一个很大的帮助