我正在使用Laravel 5.6。我有一个表Product和一个表ProductImages,其中ProductImages具有product_id外键。
在我的控制器上,我坚持我的产品没有问题,然后我想将一个或多个图像(ProductImages)保留到此产品。
我这样做:
$produto = Produto::find($produtoCriado);
$produto->imagens()->save(['url_imagem' => urlImagemExtra]);
但后来我得到:方法Illuminate \ Database \ Eloquent \ Collection :: imagens不存在。
产品型号:
class Produto extends Model {
protected $table = 'produto';
protected $fillable = [
'nome', 'descricao_curta', 'descricao_longa', 'tags',
'url_imagem_principal', 'feito_por', 'feito_em', 'altura',
'largura', 'material'
];
/***
* Retorna as imagens relacionadas ao produto
*/
public function imagens()
{
return $this->hasMany('App\ProdutoImagem');
}
}
产品图片型号:
class ProdutoImagem extends Model {
protected $table = 'produto_imagem';
protected $fillable = [
'url_imagem'
];
/***
* Busca o Produto relacionado a essas imagens
*/
public function produto()
{
return $this->belongsTo('App\Produto');
}
}
产品保存没有问题,但当我尝试添加PrudutoImagem时,我收到了错误。
如果您对子类使用save,则应将模型实例作为
$image = new ProductImage();
$image->url_imagem = urlImagemExtra;
$produto->imagens()->save($image);
或者简单地说,您可以使用create方法作为
$produto->imagens()->create(['url_imagem' => urlImagemExtra]);