CakePHP 3.7。這是我的“用戶”表:<?phpnamespace App\Model\Table;use Cake\Datasource\EntityInterface;use Cake\ORM\Association\BelongsTo;use Cake\ORM\RulesChecker;use Cake\ORM\Table;use Cake\Validation\Validator;class UsersTable extends Table{ public function initialize(array $config) { parent::initialize($config); $this->setTable('users'); $this->setDisplayField('id'); $this->setPrimaryKey('id'); $this->belongsTo('Customers', [ 'foreignKey' => 'customer_id', 'joinType' => 'LEFT' ]); } public function validationDefault(Validator $validator) { ... } public function buildRules(RulesChecker $rules) { $rules->add($rules->isUnique(['email'])); $rules->add($rules->existsIn(['customer_id'], 'Customers')); return $rules; }}和“客戶”表:<?phpnamespace App\Model\Table;use App\Model\Entity\Customer;use Cake\Datasource\EntityInterface;use Cake\ORM\Association\HasMany;use Cake\ORM\Table;use Cake\Validation\Validator;class CustomersTable extends Table{ public function initialize(array $config) { parent::initialize($config); $this->setTable('customers'); $this->setDisplayField('company_name'); $this->setPrimaryKey('id'); $this->hasMany('Users', [ 'foreignKey' => 'customer_id' ]); } public function validationDefault(Validator $validator) { ... }}好吧,現(xiàn)在我想通過(guò) 檢索控制器和模板中的關(guān)聯(lián)字段customer_id,例如:$this->Auth->user('customer_id')); // <--- WORKS$this->Auth->user('Customers.company_name')); // <--- ???我不明白必須使用什么語(yǔ)法通過(guò)外鍵 ( customer_id) “導(dǎo)航”才能讀取Customers表中的其他字段。當(dāng)然,我可以使用一種解決方法:檢索“customer_id”值(如上)為該 ID 創(chuàng)建一個(gè)關(guān)于“客戶”過(guò)濾的查詢閱讀其他領(lǐng)域但我想這不是最好的方法。
1 回答

墨色風(fēng)雨
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊
您需要自定義 Auth finder 查詢以包含客戶記錄。
但請(qǐng)注意,整個(gè) Auth 組件已被棄用,并將在版本 4 中替換為單獨(dú)的身份驗(yàn)證和授權(quán)中間件插件。
- 1 回答
- 0 關(guān)注
- 173 瀏覽
添加回答
舉報(bào)
0/150
提交
取消