我的表格如下:
EventTicketSales
viaToMany Approvings
通过EventTicketSalesApprovings
。
我在EventTicketSalesTable.php
内写了
$this->belongsToMany('Approvings', [
'className' => 'Contacts',
'joinTable' => 'event_ticket_sales_approvings',
'targetForeignKey' => 'contact_id',
'saveStrategy' => 'replace',
]);
当我做分页时,我写了
$contain = [
'Approvings'
];
$sales = $this->paginate($this->EventTicketSales->find()->where($conditions)->join($join)->contain($contain));
在search.ctp中,我写了
<?php foreach($eventTicketSales as $eventTicketSale):?>
<tr>
<td>
<?= $eventTicketSale->approvings[0]->company ?>
</td>
</tr>
我想要的是
event_ticket_sales
表之间的多对多关系保持为审批关系,为什么吗
原因是这个查询我只需要在页面中显示第一个批准的联系人,并且仍然保持分页。
我希望查询尽可能高效。
如果使用连接而不是包含更好的方法来执行此操作,我将很乐意这样做。
什么定义为第一个批准联系人?
假设我们有event_ticket_sales
有2个批准。 id
表中event_ticket_sales_approvings
最小的那个是第一个。是的id
是主整数自动增量。
上述分页查询的条件是什么?
$conditions = [
'OR' => [
['EventTicketSales.invoice_number LIKE' => '%'.$data['search_field'].'%'],
['EventTicketSales.receipt_number LIKE' => '%'.$data['search_field'].'%'],
['ApprovingsContacts.company LIKE' => '%'.$data['search_field'].'%'],
]
];
更新
我很欣赏这里有一个类似的问题How to limit contained associations per record/group?
但是,我想说明: