为了账号安全,请及时绑定邮箱和手机立即绑定

laravel怎么用ORM实现连表查询

laravel怎么用ORM实现连表查询

PHP
萧十郎 2019-03-17 21:10:25
比方说有users和usersinfo两张表:users有username,password,uid字段。usersinfo有uid,email。用ORM的话要怎么写才能达到跟原生的 where users.uid=usersinfo.uid一样?求大神解答
查看完整描述

5 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

既然你使用了ORM,那应该就是模型关联了,详见
因为 usersusersinfo 是一对一的关联关系,因此可以在 User 的模型中如下写道:

class User extends Model
{
    public function userinfo()
    {
        return $this->hasOne(UserInfo::class, 'uid', 'uid');
        // 第一个参数为关联的模型名字,第二个参数为外键,第三个参数为主键
    }
}
查看完整回答
反对 回复 2019-03-18
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

$users = DB::table('users')
            ->leftJoin('usersinfo', 'users.uid', '=', 'usersinfo.uid')
            ->get();
查看完整回答
反对 回复 2019-03-18
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

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

查看完整回答
反对 回复 2019-03-18
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

想要创建一个原生表达式,可以使用 DB::raw 方法

//where users.uid=usersinfo.uid

->where('users.uid', DB::raw('usersinfo.uid'))

关于join的写法可以参数前面的答案

查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 1657 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信