Tan*_*may 8 php laravel eloquent
我有这样的声明:
App\User::with('client')->find(2)->makeHidden('client.phone_no');
Run Code Online (Sandbox Code Playgroud)
我想从关系中隐藏某些列,但我不能用 来做到这一点makeHidden(),因为它只接受而Model不是关系的参数。
如何从关系中隐藏一些列?
Dou*_*aan 12
如果您不想phone_no通过将其添加到hidden属性来隐藏所有请求,您可以执行以下操作:
$user = App\User::with('client')->find(2);
$user->client->makeHidden('phone_no');
return $user;
Run Code Online (Sandbox Code Playgroud)
正如我在对原始问题的评论中所述:我也找到了这种方法。我相信这应该是您想要更频繁地排除列时应该使用的方法。如果您只想排除一次列,我的解决方案应该足够了。
Jon*_*eir 10
您可以隐藏查询结果中的列(不需要急切加载):
$user = User::find(2);
$user->client->makeHidden('phone_no');
Run Code Online (Sandbox Code Playgroud)
或者你甚至没有从数据库中得到它:
$user = User::with('client:id,user_id,...' /* other columns except phone_no */)->find(2);
Run Code Online (Sandbox Code Playgroud)
With 接受回调来修改查询。
$users = User::with(['client' => function($query) {
$query->select(['id', 'name']);
}])->find(2);
Run Code Online (Sandbox Code Playgroud)
您还可以在客户端模型上定义默认的隐藏属性
protected $hidden = ['phone_no'];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13145 次 |
| 最近记录: |