index for content consultas ciclo laravel eloquent

content - laravel foreach index



laravel Eloquent where cláusula (3)

Intento obtener todos los usuarios de un país específico a través de Eloquent.

El problema es que obtengo todo el registro, la cláusula where no funciona.

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

Siguiendo este patrón de la documentación de Laravel

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

Mis modelos:

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

Qué estoy haciendo mal ?


Si desea los usuarios de un país en particular, necesita algo como eso.

$users = Country::whereCounty(''salope'')->users; dd($users);

Donde los users son una Collection elocuente, recorre esa Collection y muestra a los usuarios. Si desea continuar creando su consulta en función de sus usuarios, use users() y siga encadenando, por ejemplo:

$users = Country::whereCounty(''salope'')->users()->whereBanned(0)->get(); // Or something dd($users);


El problema es que está recuperando a todos los usuarios y luego limitando solo los países que esos usuarios pueden tener. Así que vas a terminar con todos los usuarios, y no solo con los que pertenecen a Salope.

Creo que la solución es ir hacia atrás.

$country = Country::where(''name'', ''salope'')->with(''users'')->first(); foreach($country->users as $user) { echo $user->username; }


Encontré lo que estaba buscando con la versión de laravel 4.1. Mi pregunta no fue formulada correctamente. Quería consultar una relación.

$posts = Post::whereHas(''comments'', function($q) { $q->where(''content'', ''like'', ''foo%''); })->get();

entonces con mi ejemplo:

$res = User::whereHas(''country'', function($q) { $q->where(''country'', ''salope''); })->get();

Enlace de documentación