6

Eloquent を介して特定の国からすべてのユーザーを取得しようとしています。

問題は、すべてのレコードを取得し、where 句が機能しないことです。

$res = User::with(array('country' => function($query) {
          $query->where('country', '=', 'salope');
       }))->get();

laravelドキュメントのこのパターンに従ってください

$users = User::with(array('posts' => function($query)
{
    $query->where('title', 'like', '%first%');
}))->get();

私のモデル:

class User extends SentryUserModel {
    public function country() {

        return $this->belongsTo('country','country_id');
    }
}
class Country extends Eloquent {
    public function users() {

        return $this->hasMany('users');
    }

}

私は何を間違っていますか?

4

5 に答える 5

2

問題は、すべてのユーザーを取得してから、それらのユーザーが所有できる国のみを制限していることです。そのため、Salope に属するユーザーだけでなく、すべてのユーザーがまだ存在することになります。

解決策は、これを逆行することだと思います。

$country = Country::where('name', 'salope')->with('users')->first();

foreach($country->users as $user)
{
    echo $user->username;
}
于 2013-11-15T14:11:42.530 に答える