Sunday 15 July 2012

php - Laravel limit with (not globally) -



php - Laravel limit with (not globally) -

i have next query want execute eloquent.

$restaurant = restaurant::with([ 'user' => function($query) { $query->select(['username']); // doesn't work $query->wherestatus('confirmed'); } ])->find($id);

i want fetch restaurant , it's corresponding user (they related) user don't wan't information. username in case.

i add together property $hidden user model, hidden every query (in array / json form). want limit bit more query.

if add together select (with or without wrapping in array) next result:

{ 'id': 1, 'user': null }

yet if remove select total user:

{ 'id': 1, 'user': { .. json user info } }

the user exist , username not empty. how can go this?

here actual output can found.

edit: when alter value in select not exist in database see error, , deduct query correct, don't output. (query when using invalid column 'test').

select `test` `users` `users`.`deleted_at` null , `users`.`userable_id` in (1) , `users`.`userable_type` = restaurant , `status` = confirmed)

try way:

$restaurant = restaurant::with([ 'user' => function($query) { $query->wherestatus('confirmed')->lists('username'); } ])->find($id);

edit

it seems both methods work need fulfil 1 status - need include foreign_key column in lists/select. don't know relation illustration assuming have in users table restaurant_id column need utilize next code:

$restaurant = restaurant::with([ 'user' => function($query) { $query->select(['username', 'restaurant_id'])->wherestatus('confirmed'); } ])->find($id);

or

$restaurant = restaurant::with([ 'user' => function($query) { $query->wherestatus('confirmed')->lists('username','restaurant_id'); } ])->find($id);

i don't know if possible n:n relationship. should consider might bit unsafe (some problems may occur) should play if have strong reason grab selected columns.

php laravel eloquent

No comments:

Post a Comment