【发布时间】:2020-06-14 12:42:50
【问题描述】:
在 laravel 模型中我有一个关系
public function photos()
{
return $this->hasMany(Photo::class, 'item_id');
}
它返回与项目相关联的图像。现在我想在特定类别和品牌的所有产品中添加一个附加图像。所以从逻辑上讲,我得到了项目,如果它属于必需的部分,我想推送一张图片。我将代码修改为如下所示。
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany|Builder
*/
public function photos()
{
if($this->category_id = 10 && $this->brand_id ==1){
/**
* Add an additional image in specific type of products, here apple phones
*/
$photos = Photo::where('item_id', $this->id)->get();
$additionalPhoto = new Photo();
$additionalPhoto->item_id = $this->id;
$additionalPhoto->image_name = 'https://si.wsj.net/public/resources/images/RV-AK835_INNOVA_P_20130614181900.jpg';
$additionalPhoto->image_resized = false;
$photos->push($additionalPhoto);
return $photos;
}else{
return $this->hasMany(Photo::class, 'item_id');
}
}
当我在推送照片后执行dd($photos) 时,它会给出预期的结果。但唯一的事情是它适用于收集而不是关系。此关系已在多个地方使用,因此我不想将其更改为返回集合。
这样的推送数据是可能的
【问题讨论】: