猿问

laravel怎么用ORM实现连表查询

比方说有users和usersinfo两张表:
users有username,password,uid字段。
usersinfo有uid,email。
用ORM的话要怎么写才能达到跟原生的 where users.uid=usersinfo.uid一样?
求大神解答

萧十郎
浏览 1660回答 5
5回答

肥皂起泡泡

既然你使用了ORM,那应该就是模型关联了,详见。因为 users 和 usersinfo 是一对一的关联关系,因此可以在 User 的模型中如下写道: class User extends Model { public function userinfo() { return $this->hasOne(UserInfo::class, 'uid', 'uid'); // 第一个参数为关联的模型名字,第二个参数为外键,第三个参数为主键 } }

翻翻过去那场雪

$users = DB::table('users') ->leftJoin('usersinfo', 'users.uid', '=', 'usersinfo.uid') ->get();

神不在的星期二

orm最终执行的sql不是users.uid=userinfo.uid文档都有

胡说叔叔

想要创建一个原生表达式,可以使用 DB::raw 方法 //where users.uid=usersinfo.uid ->where('users.uid', DB::raw('usersinfo.uid')) 关于join的写法可以参数前面的答案
随时随地看视频慕课网APP
我要回答