使用BuildRules检查数据库中是否存在记录(CakePHP 3)

时间:2017-02-12 21:57:54

标签: sql database api cakephp cakephp-3.0

我想检查用户使用HTTP请求传递的ID是否存在于cakephp中的另一个表中。现在,我尝试使用:

public function buildRules(RulesChecker $rules)
{
    $rules->add($rules->existsIn('id_venue', 'venues'));
    return $rules;
}

但它似乎不起作用。这个规则在一个保留表中,在这个表中我有一个名为id_venue的列,我有另一个名为Venues的表,它有一个名为id_venue的主键。

public function initialize(array $config)
{
    parent::initialize($config);
    $this->table('reservations');
    $this->primaryKey('id_reservation');
    $this->hasOne('Venues');
}

我已将我的预订表与我的场地表相关联

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

没有完全理解您需要的电话类型,但如果您只需检查数据库中是否已存在特定行,您可以使用存在

$table = TableRegistry::get('Venues');
$conditions = ['id' => 15];
$exists = $table->exists($conditions); //returns true or false

这类问题已经回答: Check if record exists in CakePHP3

答案 1 :(得分:0)

existsIn的第一个参数是一个数组,我相信第二个参数区分大小写。尝试

$rules->add($rules->existsIn(['id_venue'], 'Venues'));