я могу создать логику таких как следующий, когда я использую запрос:CakePHP 3.x логики для запроса
$dateCreated = $query->func()->date_format([
'created' => 'literal',
"'%Y-%m-%d'" => 'literal'
]);
$tableData = $eventTicketSalesTable->find()
->select([
'invoiceNumber' => 'invoice_number',
'dateCreated' => $dateCreated,
'status' => $status,
'eventCode' => 'e.code',
'paymentMode' => 'p.name',
])
->join([
'p' => [
'table' => 'payments',
'type' => 'INNER',
'conditions' => 'EventTicketSales.payment_id = p.id',
],
Обратите внимание, как $dateCreated
отдельная анонимная функция, которая только извлекает дату из поля даты и времени created
внутри EventTicketSalesTable
.
Я хотел бы знать, есть ли у меня аналогичный способ заполнить $status
.
$status
зависит от полей от объединений, а также фактических EventTicketSalesTable
.
E.g.
если PaymentsTable
. amount_collected
меньше, чем EventTicketSalesTable
. amount_billed
, тогда я хочу, чтобы строка $status
была написана «Не оплачена».
если EventTicketSalesTable
. cancelled
имеет значение boolean true, тогда я хочу, чтобы строка $status
была строкой с надписью «Отменено».
и так далее.
Если создать отдельную анонимную функцию, подобную этой, невозможно, что было бы лучшим способом добиться того же результата?
Другой способ, я могу думать о том, чтобы пройти через результаты, прежде чем представлять его. Я хочу избежать этого, если это возможно.
Результат отправляется как вызов json API.