我是Laravel的新手并且一直在开发应用程序。我正在使用Laravel 5并获得漂亮的URL我正在使用eloquent-sluggable。 我有2个表,用户和艺术家及其各自的模型。我在Artist表中有关系。在Artists模型中,我有以下代码。
class Artist extends Model implements SluggableInterface
{
use SluggableTrait;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'artists';
/**
* @var array
*/
protected $sluggable = [
'build_from' => 'users.name',
'save_to' => 'slug',
];
public function user()
{
return $this->belongsTo('App\User');
}
我正在尝试使用修补程序将数据库中的现有数据更新为slug。我在艺术家表中创建了一个名为slug的新字段。当我运行以下命令时:
$artists = \App\Artist::all()
foreach ($artists as $artist) { $artist->name->resluggify()->save(); }
我得到以下错误:
[Symfony\Component\Debug\Exception\FatalThrowableError]
Fatal error: Call to a member function resluggify() on string
如何更新数据库中的现有数据?
答案 0 :(得分:0)
我刚看了cviebrock/eloquent-sluggable
的文档,因为我假设这是你正在使用的软件包。
name
只是一个字符串,因此您将无法从中调用任何方法,这是您正在尝试执行的操作。
观察它,方法resluggify()
它只是
sluggify(true)
- true
只是告诉它缓和模型,即使模型已经“被砸”了
所以以下内容应该有效:
$artist->resluggify()->save()
希望这有帮助!
答案 1 :(得分:0)
我能够解决这个问题。这是我的错,我必须将模型更新为implement SluggableInterface
,然后使用特征。
use SluggableTrait;
这解决了这个问题,我能够重新调整。