我有两张桌子:
<?php
namespace App\Model\Table;
use Cake\ORM\Table;
use App\Model\Entity\Comlib;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Validator;
use Cake\ORM\TableRegistry;
class ComlibsTable extends Table {
public function initialize(array $config) {
parent::initialize($config);
$this->table('questions');
// JOIN THE TABLES TOMORROW
$this->hasMany('Answers' , [
'foreignKey' => 'question_id'
]);
}
public function LFM( $live_req) {
$answers = TableRegistry::get('questions');
$query = $answers->find()
->distinct(['question.id'])
->matching('Answers', function ($q) use ($options) {
return $q->where(['Answers.id IN'=> '1']);
});
$query = $query->all();
//want Answers five of then
return $query;
}
}
?>
第二张桌子:
use Cake\ORM\Table;
use Cake\ORM\Query;
use Cake\ORM\TableRegistry;
class AnswersTable extends Table {
public function initialize(array $config) {
parent::initialize($config);
$this->table('answers');
}
}
在数据库中,我有一个问题表和答案表,答案表有一个外键,名为:question_id。
我想做的是从问题中选择所有内容,并通过id和可能的innerjoin将其与答案连接起来
我得到的错误是:
问题与答案无关
任何帮助都将不胜感激。
最佳答案
将数据库中的表与cakePHPTable
类混淆
调用TableRegistry::get()
时,必须传递表类的名称。所以正确的语法应该是
$answers = TableRegistry::get('Comlibs');
cake将实例化
ComlibsTable
类的新对象无论如何,您甚至不需要这样做,因为您已经在ComlibsTable中,可以使用
$this
来引用表。所以你要做的就是$query = $this->find()
->distinct(['question.id'])
->matching('Answers', function ($q) use ($options) {
return $q->where(['Answers.id IN'=> '1']);
})
->all();
关于mysql - 表1与表2不相关,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37008453/