Laravel 5.6和Eloquent将子模型持久化到数据库中,无法从模型中找到hasMany或belongsTo方法

问题描述 投票:0回答:1

我正在使用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时,我收到了错误。

eloquent persistence laravel-5.6
1个回答
0
投票

如果您对子类使用save,则应将模型实例作为

$image = new ProductImage();
$image->url_imagem = urlImagemExtra;
$produto->imagens()->save($image);

或者简单地说,您可以使用create方法作为

$produto->imagens()->create(['url_imagem' => urlImagemExtra]);
© www.soinside.com 2019 - 2024. All rights reserved.