我尝试创建新闻项并将其缩略图存储在与其主键对应的位置: $ this-> getKey 。这适用于更新,因为密钥可用,但在 create 上则不然。
我正在使用操纵器 setThumbnailImageAttribute 来处理文件上传:
public function setThumbnailImageAttribute($value) {
$this->setImage(
'thumbnail_image',
$value,
'news/'.$this->getKey().'/thumbnail_image/'
);
}
setImage 处理上传并为属性设置正确的值(以及数据库)
在更新上,结果正确:
'新闻/ 1 / thumbnail_image /'
在创建上,这会导致错误:
'新闻// thumbnail_image /'
如何使用mutator实现这一目标,还是采用不同的方法?
答案 0 :(得分:1)
这是你的方法无法实现的,是的!有一些讨厌的黑客这样做。但是你必须在创建记录后手动调用此方法。
答案 1 :(得分:0)
在模型文件中,您可以使用这些方法,您可以轻松地将您的代码注入到保存的方法中
class SomeTable extends Model
{
protected static function boot()
{
static::creating(function ($model) {
print('creating triggered');
// print_r(var_dump($model));
print_r(var_dump($model->getKey())); //returns null
});
static::saving(function ($model) {
print('saving triggered');
print_r(var_dump($model->getKey())); // returns null
});
static::saved(function ($model) {
print('saved session triggered');
print_r(var_dump($model->getKey())); //returns the id
});
static::updating(function ($model) {
print('updating triggered');
});
static::deleting(function ($model) {
// bluh bluh
});
parent::boot();
}
}