gpt4 book ai didi

mysql - 表 1 与表 2 没有关联

转载 作者:行者123 更新时间:2023-11-28 23:32:09 27 4
gpt4 key购买 nike

我有两个表类:

            <?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我得到的错误是:

questions is not associated with answers

如有任何帮助,我们将不胜感激。

最佳答案

您将数据库中的表与 cakePHP Table 类混淆了

当您调用 TableRegistry::get() 时,您必须传递 Table 类的名称。所以正确的语法是

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com