





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);
@seoppc Я забыл user_id. Обновлено.
SQLSTATE [42703]: неопределенный столбец: 7 ОШИБКА: столбец «id, user_id, about» не существует
select принимает массив, добавляет [ и ] вокруг столбцов.
@seoppc Ура, похоже, у вас concatenated все столбцы в виде строки, например 'id, user_id, about' вместо 'id', 'user_id', 'about'
@Devon Нет необходимости с ->select() только с ->get()
Кажется, это работает, но теперь я не могу получить доступ к мутаторам. Это действительно проблема :(
Спасибо за вашу быструю помощь. Он работает для мутаторов с параметром $ value, но не для следования public function getFullNameAttribute() { return "{$this->first_name} {$this->last_name}"; }.
@seoppc Вы хотите сказать, что getFullNameAttribute перестает работать на вашем User?
Он не включается в вывод JSON - да, я использую Laravel 5.6
Добавьте их в свою модель.
* При скрытии отношений используйте имя метода отношения.
<?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
Я пробовал этот подход. Он возвращает профиль как нулевой