繁体   English   中英

在Laravel雄辩的查询上隐藏关系

[英]Hide relationship on Laravel Eloquent query

我需要您提出有关从关系数组中隐藏信息的更好方法的建议。

$members = User::with('profile')->paginate(9);

$members->makeHidden([
    'slug', 'profile.avatar'
]);

dd($members->toArray());

此代码不会从配置文件数组中隐藏信息。

谢谢

关系属性不支持makeHidden ,仅整个关系不支持。 取而代之的是:

$member = User::with(['profile' => $function($query) {
    $query->select('id', 'user_id', 'about');
}])->paginate(9);

例如,上面仅会给您iduser_idabout字段。

编辑

如果您使用的是5.6也可以将列定义为逗号分隔的字符串:

$member = User:with('profile:id,user_id,about')->paginate(9);

将它们添加到模型本身。

*隐藏关系时,请使用关系的方法名称。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = ['password'];
}

这会帮你解决

https://laravel.com/docs/5.6/eloquent-serialization#hiding-attributes-from-json

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM