php - setrelation 方法在 laravel 中不起作用
问题描述
我的用户关系是:
public function country()
{
return $this->belongsTo(Country::class);
}
查询是:
$user = User::with('country')->first();
我想检查国家是否为空,将其替换为默认数据或其他任何内容
所以首先我尝试这样:
if(empty($user->country)){
$user->country = "some default value";
}
搜索后它没有用我试试这个:
if(empty($user->country)){
$user->setRelation('country' , 'some default value');
}
再次它对我不起作用。"setRelation" 删除用户对象中的国家键
解决方案
relation
如果在 eloquent result key中接收到空/null ,那么 setdefaultOject
可以设置如下:
对于单一关系:
$modelInstance = $modelInstance->setRelation('relationName', $relationModelObject)
对于多重关系:
$modelInstance = $modelInstance->setRelation('relationName', collect([$relationModelObject]))
多重关系示例:
$defaultMedia = new Media;
$defaultMedia->id = 0;
$defaultMedia->file_name = 'defaultImage.jpg';
$result = Post::with('media')->get();
$result->transform(function ($post, $key) use($defaultMedia) {
if($post->media->count() == 0) {
$post->setRelation('media', collect([$defaultMedia]));
}
return $post;
});
return $result;
现在,最终$result
您将$defaultMedia
在relation
返回时得到null
。
推荐阅读
- excel - 在单元格范围内搜索特定文本并在其旁边的单元格中更改字体格式
- c# - ListViewItem 的 UWP 显示索引
- arrays - 拆分字符串并将数组条目转换为具有“缩小”类型推断的数字或字符串
- java - 如何从另一个微服务 Java 使用 JWT 安全微服务
- java - 从另一个类的方法中调用 mutator
- python - Flask-SQLAlchemy:通过一对多关系获取父表中的列作为子模型属性
- python - Python:过滤数据帧,只保留 ActiveFlag 和日期的最后一个数据
- javascript - 如果匿名函数在循环中运行,是否会占用内存
- python - Pandas Dataframe 根据现有输入列导出新的计算列(不使用循环引用当前行和上一行)
- angular - Angular 中用于传递和显示数据的两个模型