我正在尝试实施以下连接查询
SELECT * from users as u
LEFT JOIN `table1` as ou
ON ou.user_id = u.id
LEFT JOIN table2 as o
ON o.id = ou.orid
LEFT JOIN table3 as p
ON o.pra_id = p.id;
使用我的laravel模型,所以我在我的用户模型中使用以下代码创建一个名为alldata()的函数
public function alldata()
{
return $this
->leftjoin('table1','users.id','=','table1.user_id')
->leftjoin('table2','table1.orid','=','table2.id')
->leftjoin('table3','table2.pra_id','=','table3.id');
}
现在,当我尝试通过$ gd = User :: find(1) - > getall()访问数据时,它会返回包含所有表的结果 但当我尝试访问$ gd = User :: all() - > alldata()时,它会发现错误的mathod未找到 我怎么解决这个问题 感谢
答案 0 :(得分:1)
User :: find(1)函数返回对象的单个实例(如果未找到则返回NULL)。
User :: all()函数返回所有User对象的Collection。
您需要创建一个查询,然后按以下方式获取()结果...
public static function alldata()
{
return self::query()
->leftjoin('table1','users.id','=','table1.user_id')
->leftjoin('table2','table1.orid','=','table2.id')
->leftjoin('table3','table2.pra_id','=','table3.id')
->get();
}
假设您的alldata()方法在User类中,您可以使用以下代码调用该函数:
User::alldata();
Laravel拥有一个出色的数据库关系系统,这是最值得关注的。它会使上面的查询变得更简单......