1
は私がテーブルuser
とprofile
、 1人のユーザーは、最大つのプロファイルを持って とUSER_IDとプロファイルのテーブル名によって指定されています。 私はそこに外部キーを使用しません。モデル関係キーの値を指定する方法は?
私もテーブルprofile
を使用していますcompany
のような他のテーブルを持っているので、参照が関連テーブルと関係のrelation_id =主キー=テーブル名で指定されているので、理由、私は、このようにそれを行うには、ある
profile
relation_id
relation
私が達成したいのは、モデルの関係を文字列ユーザーと等しくなるように設定することです。そこで、キーを使用するのではなく、代わりに値を使用することです。
User.php
public function getProfile()
{
return $this->hasOne(Profile::className(),
['relation_id' => 'user_id', 'relation' => User::tableName()]);
}
エラー私が取得:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user.user' in 'on clause'
The SQL being executed was:
SELECT COUNT(*) FROM `user_login`
LEFT JOIN `user` ON `user_login`.`user_id` = `user`.`user_id`
LEFT JOIN `profile` ON `user`.`user_id` = `profile`.`relation_id`
AND `user`.`user` = `profile`.`relation`
SQLが最初のカウントに失敗したので、それは、GridViewコントロールを生成するためのものであるが、エラーがselect *
SQL達成したい:
SELECT * FROM `user_login`
LEFT JOIN `user` ON `user_login`.`user_id` = `user`.`user_id`
LEFT JOIN `profile` ON `user`.`user_id` = `profile`.`relation_id`
AND `profile`.`relation` = 'user'
したがって、モデル関連キーで値を指定する方法は?
を必要とするが、場合、私のような他のテーブル用のテーブル 'profile'を使用して'会社など – Ripper
あなたはプロファイルモデル – scaisEdge
の他の関係を必要とする私は達成したい、今すぐ確認してください – Ripper