php - cakephp 3 在子关联表中使用包含

标签 php mysql cakephp cakephp-3.0

我有 4 个表:提案、投标、用户和驱动程序。提案有许多出价,出价有许多用户,最后驱动程序属于用户。

我想要做的是获取提案 1 的所有出价,其中应显示提案名称、出价编号、出价的用户详细信息,包括驱动程序表中保存用户的一些特定详细信息的字段。

我的架构如下:

    CREATE TABLE `proposals` (
      `id` int(11) NOT NULL,
      `email` varchar(200) NOT NULL,
      `item` int(11) NOT NULL,
      `desc` varchar(100) NOT NULL,
      `sess` varchar(255) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    CREATE TABLE `bids` (
      `id` int(11) NOT NULL,
      `proposal_id` int(11) NOT NULL,
      `user_id` int(11) NOT NULL,
      `amount` double NOT NULL,
      `session_code` varchar(255) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

    CREATE TABLE `users` (
      `id` int(11) NOT NULL,
      `First_Name` varchar(200) DEFAULT NULL,
      `Last_Name` varchar(200) DEFAULT NULL,
      `role` varchar(200) NOT NULL,
      `Mobile_No` int(11) DEFAULT NULL,
      `Membership_Start` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `Address` varchar(255) DEFAULT NULL,
      `Post_Code` varchar(255) DEFAULT NULL,
      `email` varchar(50) DEFAULT NULL,  
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    CREATE TABLE `drivers` (
      `id` int(11) NOT NULL,
      `user_id` int(11) NOT NULL,
      `verified` varchar(255) NOT NULL,
      `dealno` varchar(255) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

这是我正在使用的失败代码 - 我知道我错了:

     $query = $this->Bids->find()    
        ->contain([
            "Users",
            "Drivers",
            "Proposals"

        ])
        ->matching("Proposals", function($q){
            return $q->where(["proposals.id" => $id ]);
        });

        $bid = $this->paginate($query);

任何帮助将不胜感激。

最佳答案

我用以下方法修复了这个问题:

 $proposal = $this->Proposals->get($id, [
        'contain' => ['Bids' => ['Users' => ['Drivers']]]

    ]);

关于php - cakephp 3 在子关联表中使用包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48318625/

相关文章:

php - 如何使用php和sql获取表格中的复选框

php - 使用 cakephp 从数据库中推荐单词

php - 如何使 CakePHP 的 HABTM 复选框在列中从上到下按字母顺序排列

php - 如何访问 php 中返回值 AS 的查询结果? (而不是看田地)

mysql - MySQL Select SQL 背后的操作

php - CakePHP : site not opening on webserver MIGRATION issue works fine on localhost

php - 如何从另一个表排序的mysql表中获取值?

javascript - 如何使用ajax正确地将数据发布到div中?

Javascript AJAX 调用范围 - 可能很愚蠢

c# - 我的应用程序占用的内存随着时间的推移不断增加