使用laravel

时间:2015-10-26 15:05:11

标签: laravel laravel-5 eloquent

我有两个表格电子邮件(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');
    }
}

2 个答案:

答案 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
}