我有两个表格电子邮件(email_id,电子邮件)和用户(user_id)以及数据透视表user_email(id,user_id,email_id),我想检查我的电子邮件“toto@toto.com”是否存在user_id“2”。
$emailID = Email::where('email', 'toto@toto.com')->pluck('id');
$exists = User::find('2')->emails->contains($emailID);
结果还可以,但我想知道是否可以使用Eloquent将其合并为一个查询。
如果有这些型号:
class Email extends Model {
public function users() {
return $this->belongsToMany('App\User', 'user_email');
}
}
class User extends Model {
public function emails() {
return $this->belongsToMany('App\Email', 'user_email');
}
}
答案 0 :(得分:1)
是的,你可以这样做。
public function getUserById($id) {
$user = User::with('emails')->where('id', 2)->first();
return view('your-view')->with('user', $user);
}
然后在您的刀片模板上。
@foreach ($user->emails as $email)
{{ $email->email }}<br/>
@endforeach
查看Eager Loading文档以获取更多信息。
答案 1 :(得分:1)
您也可以使用关系进行查询:
$email_address = 'toto@toto.com';
$user_id = 2;
$email = Email::whereHas('users', function($q) use ($user_id) {
$q->where('users.id', $user_id);
})->where('email', $email_address)->first();
if($email->exists) {
//... it exists
}