在登录模型中实现了与图片表的关联
function picture () { return $this->hasOne('App\Picture'); }
现在,我需要图片.图片状态= 1和用户.用户状态= 1的数据
Login::with('picture')->where('picture_status', 1)->where('user_status',1);
但是,如果条件不适用于图片表,我如何在两个表上实现和条件
hsvhsicv1#
class Login extends Model { protected $primaryKey = 'id'; function picture () { return $this->hasOne('App\Picture', 'id', 'user_id')->where('picture_status', 1)->where('user_status',1)->first(); } }
你可以这样打电话;
$usersWithProfilePictures = Login::with('picture')->get();
3zwtqj6y2#
这应该可以做到:
Login::with(['picture' => function ($query) { $query->where('picture_status', 1)->where('user_status',1); }])->get();
有时,您可能希望立即加载关系,但也要为立即加载查询www.example.com指定其他查询约束https://laravel.com/docs/5.2/eloquent-relationships#constraining-eager-loads
ygya80vv3#
class Login extends Model { protected $primaryKey = 'id'; function picture () { return $this->hasOne('App\Picture', 'id', 'user_id'); } ................ public function myF(){ self::with('picture')->where('picture_status', 1)->where('user_status',1)->get(); } }
vuv7lop34#
如果有人仍然碰到这个问题,检索正确记录的最好方法是使用Laravel Query Builder with join:
$logins = DB::table('logins') ->join('pictures', 'logins.id', '=', 'pictures.login_id') ->select('logins.*', 'pictures.status') ->where('logins.status', 1) ->where('pictures.status', 1) ->get();
有关详细信息,请访问https://laravel.com/docs/6.x/queries#joins
xqk2d5yq5#
您必须使用ofMany Laravel函数,这意味着模型具有多个中的一个
function picture() { return $this->hasOne('App\Picture', 'id', 'user_id')->ofMany( function ($query) { return $query->where('picture_status', 1)->where('user_status', 1); }); }
5条答案
按热度按时间hsvhsicv1#
你可以这样打电话;
3zwtqj6y2#
这应该可以做到:
有时,您可能希望立即加载关系,但也要为立即加载查询www.example.com指定其他查询约束https://laravel.com/docs/5.2/eloquent-relationships#constraining-eager-loads
ygya80vv3#
vuv7lop34#
如果有人仍然碰到这个问题,检索正确记录的最好方法是使用Laravel Query Builder with join:
有关详细信息,请访问https://laravel.com/docs/6.x/queries#joins
xqk2d5yq5#
您必须使用ofMany Laravel函数,这意味着模型具有多个中的一个