0

私はYiiフレームワークを初めて使用し、質問があります。

次のフィールドを持つ'node'という名前のテーブルがあります。

  • id
  • 名前
  • parent_id

parent_idには、このテーブルにも存在するノードの親のIDが含まれます。

Giiインターフェイスを使用して、モデル、コントローラー、およびビューファイルを作成しました。ビューファイルに親のIDが表示されていますが、IDの代わりに親の名前を表示したいと思います。

このテーブルのモデルクラスにパブリックプロパティを追加する必要があるかもしれないので、ビューファイルの->parent_nameを介してアクセスします。

どうすればいいですか?どのファイルを変更する必要がありますか?

4

2 に答える 2

1

親ノードとの関係が必要です。

したがって、Node::relations 関数には、次のようなものが必要です。

'parent' => array(self::BELONGS_TO, 'Node', 'parent_id'),

子からこの値を取得するには、次のようにします (子ノード変数の名前が $childNode であると仮定します)。

echo $childNode->parent->name;

本当にできるようになりたいなら…

$childNode->parent_name;

... 何らかの理由で、次のように Node モデルにプロパティを作成できます。

public function getParent_name()
{
    if ($this->parent == null)
        return '';

    return $this->parent->name;
}

今、あなたは呼び出すことができます...

$childNode->parent_name;

また

$childName->getParent_name();

親ノードの名前を取得します。

于 2012-12-28T15:37:40.923 に答える
1

parent次のようなテーブルとリレーションの親が必要です。

'parent' => array(self::BELONGS_TO, 'Parent', 'parent_id)

また

'parent' => array(self::BELONGS_TO, 'Node', 'parent_id'),

それが同じテーブルへの関係である場合。そして、次のように親の名前にアクセスできます。

echo CHtml::value($node, 'parent.name'); 
于 2012-12-28T13:17:59.843 に答える