2016-04-23 50 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; 

這解決了這個問題,我能夠解決問題。