2016-08-03 24 views
1

Ich habe eine TabelleYii2 Sluggable Verhalten Update vorhandenen Zeilen in DB

-------------------- 
id |title | slug 
-------------------- 
1 | name_1 | 
-------------------- 
1 | name_2 | 
-------------------- 

Wie kann ich Spalte Butzen aus Kolonne "Titel" mit yii2 Sluggable Verhalten

-Code aktualisieren bellow nicht funktionieren

$this->update('event', ['slug' => (new Expression(Inflector::slug('title')))]); 

Antwort

0

Fügen Sie die SluggableBehavior zum Modell

use yii\behaviors\SluggableBehavior; 

class YourModel extends \yii\db\ActiveRecord 
{ 

    public function behaviors() 
    { 
     return [ 
      [ 
       'class' => SluggableBehavior::className(), 
       'attribute' => 'title', 
       // 'slugAttribute' => 'slug', 
      ], 
     ]; 
    } 

Das SlugAttribute wird nicht benötigt, da unsere Spalte slug heißt, der Framework-Standard. Dies könnte besser für die Produktion auch

+0

aber wie kann ich Liste der refferenses meiner Elemente erhalten, wenn Slug leer ist? –

+0

Ich denke, Sie müssen dies manuell tun oder erstellen Sie eine Funktion, die Zeilen nacheinander abrufen und seinen Slug aktualisieren. –

0

Beste Lösung verwendete ich Schreib Konsole Aktion wie

public function actionEventSlugs(){ 
    $events = \frontend\models\Events::find()->all(); 
    foreach($events as $event){ 
     $slug = \yii\helpers\Inflector::slug($event->title); 
     $event->slug = $slug; 
     // $this->stdout($slug."/n");    
     $event->update(false); 
    } 
} 

und die Konsole starten und einfach die

yii build/event-slug 

Befehl ausführen. Hier bauen "ist der Controller-Name

kann es hilft

Dank