Yii2 "hat keine Beziehung namens" auf der Suche nach Modell auch die Funktion, die es definiert wird, in der Haupt-Modell

Ich bin eine yii2 Fehler : common\models\Book nicht im Zusammenhang mit dem Namen "Favorit".

Wenn ich versuche zu ergänzen:

public function search($params) {
    $query = Book::find();
    $query->joinWith(['author', 'profile', 'favorite']);

In dem Buch Modell ich habe die public function:

public function getFavoritedIcon() {
    if (isset($this->favorite)) {
        return '<i class="glyphicon glyphicon-asterisk books-form"></i>';
    } else {
        return '';
    }
}

Und auch diese zusätzliche Funktion, um das Symbol

public function getFavoritedIcon() {
    if (isset($this->favorite)) {
        return $icon;
    } else {
        return '';
    }
}

Und dies funktioniert gut im Netz, an dem möchte ich hinzufügen, Sortieren und filtern:

[
    'label' => 'Favorites',
    'attribute' => 'favorite',
    'value' => 'favoritedIcon',
    'hAlign' => 'center',
    'vAlign' => 'middle',
    'format' => 'raw',
    'width' => '50px',
],

Habe ich einige verschiedene Dinge, die von anderen Modellen, die ich benutze:

  • im Netz bekomme ich den Wert als ein Symbol aus dem Buch-Modell, aber ich habe dieses vor.
  • die andere Sache ist, dass die Lieblings-Modell hat nicht die gleichen Namen, die die Tabelle, aber es funktioniert Prima im Netz

abstrakte Klasse Lieblings extends \yii\db\ActiveRecord
{

    public static function tableName()
    {
        return 'user_favorite';
    }


    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['user_id', 'book_id'], 'required'],
            [['user_id', 'book_id'], 'integer'],
            [['selectedTime'], 'safe']
        ];
    }

Irgendwelche Hinweise, was ich falsch mache ?

======================================================

UPDATE nach Pedro del Sol Antwort

Gab es einige Fehler im code, aber der Hauptgrund war, antwortete Pedro, ich hatte eine Lieblings-Funktion in der Buch-Modell, aber nicht die Favoriten mit mehreren Ausgang.

So, jetzt ist es so:

In dem Buch Modell

    public function getFavorite() {
    $userID = Yii::$app->user->identity->id;
    return Favorite::find()->where(['user_id' => $userID, 'book_id' => $this->id])->one();
}

public function getFavorites() {
    $userID = Yii::$app->user->identity->id;
    return $this->hasMany(Favorite::className(), ['book_id' => 'id'], ['book_id' => $this->id]);
}
public function getFavoritedIcon() {
    if (isset($this->favorite)) {
        return '<i class="glyphicon glyphicon-asterisk books-form"></i>';
    } else {
        return '';
    }
}

In der BookSearch Modell:

    public function search($params) {
    $query = Book::find();
    $query->joinWith(['favorites']);

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    $dataProvider->setSort([
        'attributes' => [
            'title',
            'author_id',
            'rights_owner_id',
            'user_favorite.user_id',
        ]
    ]);

- und der grid-Ansicht :

        [
        'label' => 'Favorites',
        'attribute' => 'user_favorite.user_id',
        'value' => 'favoritedIcon',
        'hAlign' => 'center',
        'vAlign' => 'middle',
        'format' => 'raw',
        'width' => '50px',
    ],
Schreibe einen Kommentar