php - Laravel 6中的雄辩关系。无法修改/覆盖关系属性
问题描述
我在两个 Eloquent 模型之间建立了一对一的关系,我想替换profile_picture
在我的User
Eloquent 模型中调用的关系属性,但我不知道该怎么做。
这是我的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
];
我尝试使用突变器,但看起来它不适用于关系属性。
我发现了这个,但对我不起作用。
提前致谢。
解决方案
您可以为关系默认模型提供属性,您可以将数组或闭包传递给withDefault
方法
public function profile_picture(){
return $this->hasOne(UserProfilePicture::class)->withDefault(UserProfilePicture::$defaultUserProfilePicture);
}
参考:https ://laravel.com/docs/7.x/eloquent-relationships#default-models
推荐阅读
- java - 如何在 Java 中将字符串转换为可运行代码
- reactjs - 如何更改material-ui Button的道具(变体)?
- css - 样式 css 文件未应用于我的网站,因为我猜是新的 Windows 更新
- apache-zookeeper - 无法启动 Zookeeper 收到异常说无法加载
- python - 为什么 SpeechRecognition 库不适用于临时音频文件?
- c++ - 我应该将同一解决方案在另一个项目中生成的 DLL 放在哪里-我正在使用 Visual Basic Visual Studio 2017-?
- php - 尽管我在构造函数中使用了异常,但得到未捕获的错误
- sql - 在 DB2/400 中获取仅按用户分组的最新结果
- authorize.net - 如何在 Authorize.net API 上实现部分身份验证
- laravel - Vue+laravel+apache 没有正确重定向