我在``啤酒''表中创建了一个名为``子弹''的行,我想在其中存储我的啤酒名称的子弹。问题是我已经有1000多个啤酒,我不想手动为每个子弹输入子弹其中之一,所以我试图制作一个脚本来自动更新所有子弹。但是我没有做到这一点:
这是我的代码,为每款新啤酒都添加
/**
* Set the title attribute and automatically the slug
*
* @param string $value
*/
public function setNameAttribute($value)
{
$this->attributes['name'] = $value;
if (! $this->exists) {
$this->setUniqueSlug($value, '');
}
}
/**
* Recursive routine to set a unique slug
*
* @param string $title
* @param mixed $extra
*/
protected function setUniqueSlug($name, $extra)
{
$slug = str_slug($name.'-'.$extra);
if (static::whereSlug($slug)->exists()) {
$this->setUniqueSlug($name, $extra + 1);
return;
}
$this->attributes['slug'] = $slug;
}
该代码可以正常工作,但是如何使用唯一的标记更改数据库中所有现有的啤酒。谢谢你的帮助。
顺便说一句,您可能是说您在啤酒表中创建了一个名为“ slug”的列,而不是一个ROW。
我会:
更改数据库定义
如果您在应用程序上使用迁移。.可能是一个主意:
使子弹柱成为唯一的迁移。因此,当您尝试添加并非唯一的块时,您的数据库将在将来开始发表评论。因此,您在这方面是永不过时的。
更改当前数据
并用于更改当前数据。如果是一次性操作,为什么不使用Tinker?
$php artisan tinker;
在修补程序中,选择所有模型(或子集)并在每个模型上运行该方法。就像是:
$beers = Beer::all();
foreach ($beers as $beer) {
//do your thingy
$beer->save()
}
但是:请确保您键入的代码在本地进行了测试,并且不在生产环境中使用all()(但要在较小的部分中使用... :-)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句