Скрыть отношения на Laravel Eloquent запрос - PullRequest
0 голосов
/ 07 июня 2018

Мне нужно ваше предложение о том, как лучше скрыть информацию из массива отношений.

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

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

dd($members->toArray());

Этот код не скрывает информацию из массива профиля.

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Добавьте их в свою модель.

* При сокрытии отношений используйте имя метода отношения.

<?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

0 голосов
/ 07 июня 2018

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...