【发布时间】:2020-07-31 01:14:33
【问题描述】:
我在两个 Eloquent 模型之间建立了一对一的关系,我想在我的 User Eloquent 模型中替换一个名为 profile_picture 的关系属性,但我不知道该怎么做。
这是我的User 模型的摘要。
class User extends Authenticatable implements JWTSubject{
use Notifiable;
public function profile_picture(){
return $this->hasOne(UserProfilePicture::class);
}
}
这是我的UserProfilePicture 模型的摘要。
class UserProfilePicture extends Model{
public function user(){
return $this->belongsTo(User::class);
}
}
这就是我在我的UserController 文件中假装这样做的方式。
public function publicUserData($username){
$user = User::where("username", $username)->with("profile_picture")->first();
if($user){
if(!$user->profile_picture){
$user->profile_picture = UserProfilePicture::$defaultUserProfilePicture;
}
return response()->json($user);
}
return response()->json(false);
}
这是$defaultUserProfilePicture 静态数组。
public static $defaultUserProfilePicture = [
"url" => "public/avatars/defaultUserPhoto.jpg",
"size" => 5229
];
我尝试使用 mutators,但看起来它不适用于关系属性。
我找到了this,但对我不起作用。
提前致谢。
【问题讨论】:
-
setRelation不适合你吗?如$user->setRelation('profile_pic', UserProfilePi...::$default) -
我什至没有尝试过,它存在于 Laravel 6 中?,我在 Laravel Docs 中找不到它!
-
它不起作用,$user->setRelation("profile_picture", UserProfilePicture::$defaultUserProfilePicture); ... :(