我有两张桌子:

            <?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/

10-10 06:53