在登录模型中我实现了与图片表的关系
function picture () {
return $this->hasOne('App\Picture');
}
现在我想要Picture.picture_status = 1和User.user_status = 1
的数据Login::with('picture')->where('picture_status', 1)->where('user_status',1);
但是如果条件不适用于图片表,我该如何在两个表上实现和条件
答案 0 :(得分:2)
这应该这样做:
Login::with(['picture' => function ($query) {
$query->where('picture_status', 1)->where('user_status',1);
}])->get();
有时您可能希望加载关系,但也为热切加载查询指定其他查询约束 https://laravel.com/docs/5.2/eloquent-relationships#constraining-eager-loads
答案 1 :(得分:1)
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();
}
}
答案 2 :(得分:0)
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();
答案 3 :(得分:0)
万一有人仍然偶然发现这个问题。检索正确记录的最佳方法是使用带有连接的Laravel查询生成器:
$logins = DB::table('logins')
->join('pictures', 'logins.id', '=', 'pictures.login_id')
->select('logins.*', 'pictures.status')
->where('logins.status', 1)
->where('pictures.status', 1)
->get();
了解更多信息