2016-04-23 56 views
1

我是Laravel的新手,并且一直在开发一个应用程序。我正在使用Laravel 5并获得漂亮的网址,我正在使用雄辩呆板。 我有2个表格,用户和艺术家及其各自的模型。我在Artist表中有关系。在艺术家模型中,我有下面的代码。Laravel 5:雄辩可靠的resluggify关系数据

 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'); 
    } 

我正在尝试使用修补程序更新数据库中的现有数据以slu。。我在艺术家表中创建了一个名为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

我刚刚看过cviebrock/eloquent-sluggable的文档,因为我认为这是您正在使用的软件包。

name在这种情况下,只是一个字符串,所以你将无法从它调用任何方法,这是你的代码正在尝试做什么。

看着它,resluggify()它只是

sluggify(true)一个辅助函数的方法 - true只是告诉它sluggify即使模型已经在模式“猛击”

所以下面应工作:

$artist->resluggify()->save()

希望这有助于!

0

我能够解决这个问题。这是我的错误,我不得不更新模型到implement SluggableInterface,然后使用特质。

use SluggableTrait; 

这解决了这个问题,我能够解决问题。