I have a statement like this:
App\User::with('client')->find(2)->makeHidden('client.phone_no');
I want to hide certain columns from a relation, but I can't do that with makeHidden()
, because it only takes the arguments for the Model
not the relation.
How can I hide some columns from the relation?
If you don't want to hide the phone_no
for all the requests by adding it to the hidden
property, you could do something like this:
$user = App\User::with('client')->find(2);
$user->client->makeHidden('phone_no');
return $user;
As I stated in my comment to the original question: I found this method as well. I believe this should be the method you should use when you want to exclude columns more often. If you only want to exclude a column once, my solution should be sufficient.
You can either hide the column in the query result (eager loading is unnecessary):
$user = User::find(2);
$user->client->makeHidden('phone_no');
Or you don't even get it from the database:
$user = User::with('client:id,user_id,...' /* other columns except phone_no */)->find(2);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With