我在Laravel做项目。我的模型名为'User.php',这里我想设置$ appends变量取决于条件。 在数据库中,我以key属性格式存储了值。 例如:
我有一个名为'user'的表格,其中包含姓名,电子邮件和手机号码等基本信息。
其他名为'user_attributes_master'的表,其中包含“avatar”,“theme”等列。
和其他名为'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的'avatar'col。如何设置此追加变量。
属性模型包含代码,
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'。
答案 0 :(得分:2)
您可以使用appends()
向$appends
动态添加属性。试试这个:
$attributes->where('pivot.value', '!=', null)->each->appends('avatar_path');
答案 1 :(得分:0)
重命名:protected $appends = ['avatar_photo'];
至:'protected $appends = ['avatarphoto'];'