-1
私は3つのレベルの関係を持つデータベースを持っています。 cheque-> account-> customerを選択します。今私は、次のメソッドを使用して、同時に3つのテーブルすべてからデータを取得しようとしています。YII 2 3番目のテーブルの関係データ
$query = Cheque::find();
$query->joinWith(['account.customer']);
$query->orderBy('sr desc');
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
チェックモデル:
class Cheque extends \common\components\db\ActiveRecord {
/**
* @inheritdoc
*/
public static function tableName() {
return 'cheque';
}
/**
* @inheritdoc
*/
public function rules() {
return [
[['sr'], 'integer'],
[['ID', 'account_ID'], 'required'],
[['ID', 'account_ID', 'created_by', 'branch_ID', 'application_ID'], 'string'],
[['serial_start', 'serial_end', 'status'], 'number'],
[['created_on'], 'safe']
];
}
/**
* @inheritdoc
*/
public function attributeLabels() {
return [
'ID' => 'ID',
'account_ID' => 'Account ID',
'serial_start' => 'Serial Start',
'serial_end' => 'Serial End',
'created_on' => 'Created On',
'created_by' => 'Created By',
'branch_ID' => 'Branch ID',
'application_ID' => 'Application ID',
'status' => 'Status',
'sr' => 'ID'
];
}
/**
* @return \yii\db\ActiveQuery
*/
public function getAccount() {
return $this->hasOne(Account::className(), ['ID' => 'account_ID']);
}
public static function getActiveChequeBook($account_ID) {
return Cheque::findAll(['account_ID' => $account_ID, 'status' => array_search('Active', \common\models\Lookup::$cheque_status)]);
}
}
しかし、これを実行して、私は次のエラーを取得:読み取り専用のプロパティを設定するメッセージ'と pre>の例外'のYii \ベースの\ InvalidCallException ':共通の\ models \ Account :: customer '
回答を更新してaccount.customer関係を表示してください。 – scaisEdge
チェックモデル – scaisEdge
を表示してください@scaisEdge今すぐ見てください –