Как установить переменную добавления по условию в модели laravel?

Я делаю проект на Laravel. У меня есть модель с именем User.php, и здесь я хочу установить переменную $ appends в зависимости от условия. В базе данных я сохранил значения в формате ключевого атрибута. например:

  • У меня есть таблица с именем «пользователь», которая содержит основную информацию, такую ​​как имя, адрес электронной почты и номер мобильного телефона.

  • Другая таблица с именем user_attributes_master содержит такие столбцы, как «аватар», «тема» и т. Д.

  • и другая таблица с именем user_attribute_values, которая содержит такие столбцы, как id, user_id и att_id (который является первичным ключом таблицы user_attributes_master)

user.php выглядит как

class User extends Authenticatable
{
protected $appends = ['avatar_photo'];

public function profile_attributes()
    {
        return $this->belongsToMany(\App\Models\Access\User\UserProfileAttributes::class,config('access.user_attribute_values_table'),'user_id','user_attribute_id')->withPivot('value', 'active')->withTimestamps();
    }

/**
     * @return string
     */
    public function getAvatarPhotoAttribute()
    {
        $avatar = $this->profile_attributes()->where('user_attributes_master.id',7)->first()->avatar_path;
        return $avatar;

    }
}

Здесь я получаю атрибут avatar_path для каждой записи, которая является добавляемой переменной, которую я установил для модели profile.php. Как получить это только в столбце «аватар» в profile.php. Как я могу установить эту добавляемую переменную.

код атрибута модели conatins,

protected $appends = ['avatar_path','theme_path'];

public function getAvatarPathAttribute()
    {
            return $this->pivot->value != null ? config('app.url').'/'.config('profile.images.user_images'). "/" . $this->pivot->user_id ."/" . config("profile.images.avatar")."/".$this->pivot->value : '';

    }

Здесь мне не нужен avatar_path для каждого атрибута.


person AmarjaPatil4    schedule 26.04.2018    source источник
comment
Вы хотите изменить атрибуты в $appends в зависимости от какого-либо условия?   -  person Jonas Staudenmeir    schedule 26.04.2018
comment
да, если значение моего атрибута содержит аватар, тогда только мне нужен полный путь к этому объекту. прямо сейчас он существует со всеми атрибутами в объекте   -  person AmarjaPatil4    schedule 27.04.2018


Ответы (2)


Вы можете использовать appends() для динамического добавления атрибутов в $appends. Попробуй это:

$attributes->where('pivot.value', '!=', null)->each->appends('avatar_path');
person Jonas Staudenmeir    schedule 27.04.2018

переименовать: protected $appends = ['avatar_photo'];

to : 'protected $appends = ['avatarphoto'];'

person Leo    schedule 26.04.2018
comment
Я отредактировал свой вопрос теперь, возможно, я сделал - person AmarjaPatil4; 26.04.2018