我需要你关于更好地隐藏关系数组信息的建议。
$members = User::with('profile')->paginate(9);
$members->makeHidden([
'slug', 'profile.avatar'
]);
dd($members->toArray());
此代码不会隐藏配置文件数组中的信息。
由于
答案 0 :(得分:3)
makeHidden
,只支持整个关系。相反,采取你想要的:
$member = User::with(['profile' => $function($query) {
$query->select('id', 'user_id', 'about');
}])->paginate(9);
例如,上述内容只会明确地为您提供id
,user_id
和about
字段。
修改强>
如果您使用5.6
,您也可以将列定义为逗号分隔字符串:
$member = User:with('profile:id,user_id,about')->paginate(9);
答案 1 :(得分:2)
将它们添加到您的模型中。
*隐藏关系时,请使用关系的方法名称。
<?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