为了账号安全,请及时绑定邮箱和手机立即绑定

从 $Auth 中检索关联字段的 CakePHP 语法

从 $Auth 中检索关联字段的 CakePHP 语法

PHP
手掌心 2022-06-17 17:12:49
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)    {        ...    }}好吧,现在我想通过 检索控制器和模板中的关联字段customer_id,例如:$this->Auth->user('customer_id')); // <--- WORKS$this->Auth->user('Customers.company_name')); // <--- ???我不明白必须使用什么语法通过外键 ( customer_id) “导航”才能读取Customers表中的其他字段。当然,我可以使用一种解决方法:检索“customer_id”值(如上)为该 ID 创建一个关于“客户”过滤的查询阅读其他领域但我想这不是最好的方法。
查看完整描述

1 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

您需要自定义 Auth finder 查询以包含客户记录。

但请注意,整个 Auth 组件已被弃用,并将在版本 4 中替换为单独的身份验证授权中间件插件。


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信