sql >> データベース >  >> Database Tools >> phpMyAdmin

データベースに設定せずにYiiで外部キーを修正することは可能ですか?

    私が間違っていなければ、あなたは必要ありません mySqlに、Yiiで引き続き機能するように外部キー関係を適用させる。 mySqlでFK制約を設定すると、適切なデータベースの整合性が保証されますが、Yiiが実際に実行時にそれを使用するとは思いません。

    プロジェクトを構築するために(Giiの)yiicを最初に実行するとき、モデルで正しい関係を構築するためにDBを調べると思いますが、その後はそれらを使用しません。

    次に、Yiiはテーブルリレーションシップに関するこの知識(yiicから)を使用して、リレーショナルデータにアクセスするためのショートカットメソッドを提供することで作業を楽にし、mySql制約に違反したり、醜いSQLエラーなどを取得したりしないようにします。基礎となるSQL制約のないYiiリレーションロジック。 唯一の問題は、Yiiが混乱して、存在しないFKなどを割り当てた場合、データベースがこのエラーをキャッチしないことです(データの整合性によりエラーが発生しやすくなります)。

    製品を部門にリンクするには、製品にdepartment_idフィールドがあることを確認してください(これはあなたのように聞こえます)。次に、そのような関係ルールをProductに追加します:

    'department' => array(self::BELONGS_TO, 'Department', 'department_id'),
    

    そしてあなたの部門モデルでは:

    'products' => array(self::HAS_MANY, 'Product', 'department_id'),
    

    これで、通常のように関係を使用できるようになります。

    $myProductModel->department; // returns the model of the Department referenced
    $myDepartmentModel->products; // returns the models of all Products in the department
    

    幸運を祈ります。私が基地から離れていて、うまくいかない場合はお知らせください。




    1. django、phpmyadmin、mysql?

    2. 誰かがこのコードの何が問題なのかを理解するのを手伝ってもらえますか?

    3. SQL ServerManagementStudioのオブジェクトエクスプローラーが消えた-見つからない-消えた

    4. PHP、MySQL検証の誤動作と検索が機能しませんか?