0

这是一个两部分的问题。我发现了类似的东西,但它更复杂,有更多的表和使用的连接,使得它更复杂,更难以转化为我更简化的情况。此外,它不包括我的问题的第二部分。

这发生在我的 OrdersController 中。我也有 ArchivedordersControler 和 ArchivedOrder 模型

  1. 我正在尝试在两个不同的表(orders 和archived_orders)中搜索电子邮件地址。我不需要加入任何东西(至少我认为我不需要)。两个表具有完全相同的结构,一个仅用于归档值。

    使用 MySQL 我只会做类似的事情

    select * from orders where orders.email = '$email'
    Union
    select * from archived_orders where archived_orders.email = '$email'
    
  2. 如何添加某种标识符以知道它是从哪个表中选择的?电子邮件可以出现在两个表格中,但根据从哪个表格中提取的选项显示的选项会有所不同。

4

1 回答 1

-1

您需要为两个表创建一个模型,Order并且ArchivedOrder. 这样,您可以通过以下方式轻松地在两个表中找到您要查找的数据:

// From OrdersController
$this->Order->find('first', array('conditions' => array('email' => $email)));

// From ArchivedOrdersController
$this->ArchivedOrder->find('first', array('conditions' => array('email' => $email)));

如果您想从原始 OrdersController 获取归档数据,您也可以从那里加载模型,例如:

$this->loadModel('ArchivedOrder');
$this->ArchivedOrder->find('first', array('conditions' => array('email' => $email)));

这样,您就不需要单独的控制器了。它将数据作为数组返回,如下所示:

array(
    'Order' => array(
         'id' => 12,
         'email' => 'customer@example.com'
         // And other data...
    )
)

所以从Order你可以看出它是从原始表中选择的。否则,它将是ArchivedOrder

于 2013-06-05T08:01:34.463 回答