Один контроллер Несколько таблиц

Я работаю над формой, которая должна иметь возможность обновлять две разные таблицы.
Я использую контроллер заказов и мне нужно обновить таблицу заказов. Другая таблица, которую мне нужно обновить, — CampaignCustomers, где я хотел бы обновить идентификатор кампании.

Две модели связаны, и вот результат, когда я отлаживаю $ order:

array(
'Order' => array(
'OrderID' => (int) 1574996,
'OrderType' => '3',
'UPSTrackingNumber' => null,
'CreatedDate' => 'Mar 30 2019 12:42:00:000PM',
'ShippedOnDate' => null,
'Notes' => null,
'OrderedBy' => 'TIM',
'UserID' => (int) 431,
'CampaignCustomerID' => (float) 78156512,
'TaxPercentage' => (int) 0,
'DiscountID' => null,
'DiscountPercentage' => (int) 8,
'TotalPrice' => (float) 7.75,
'OrderStatusID' => (int) 13,
'LabelCategory' => null,
'LabelPrinted' => (int) 0,
'InvoicePrinted' => (int) 0,
'ShippingMethodID' => (int) 9,
'SaturdayDelivery' => (int) 0,
'ShippingAddress' => 'ert',
'ShippingPrice' => (float) 7.75,
'ConfirmationEmail' => null,
'PaymentMethod' => 'Bill In Full',
'PurchaseOrderNumber' => ' dfqsdfsdafe3r23rwererewrw',
'CreditCardHolderName' => null,
'CreditCardNumber' => null,
'CreditCardExpirationDate' => null,
'CreditCardStreet' => null,
'CreditCardZipCode' => null,
'CreditCardCVV' => null,
'TransactionID' => null
),

'CampaignCustomer' => array(
'CampaignCustomerID' => (float) 78156512,
'CampaignID' => (int) 422,
'CustomerID' => (int) 3633
),

Это мой взгляд:

<?php
debug($order);
echo $this->Html->div("box");
echo $this->Html->tag("h3","Edit Order ".$order['Order']['OrderID']);
echo "<p><b>Company: </b>" . $order["Company"]["CompanyName"] . "</p>";
echo "<p><b>Order ID: </b>" . $order["Order"]["OrderID"] . "</p>";
echo $this->Form->create(("Order"));
echo $this->Form->input("PurchaseOrderNumber");
echo $this->Form->input("CampaignID",array("options"=>$campaigns,"label"=>"Campaign","selected"=>$order["Campaign"]["CampaignID"]));
echo $this->Form->input("CreatedDate");
echo $this->Form->input("OrderType",array("options"=>$orderType,"selected"=>$order["Order"]["OrderType"]));
echo $this->Form->input("OrderedBy");
echo $this->Form->input("ShippingMethodID",array("options"=>$shipping_method_ids,"selected"=>$order["Order"]["ShippingMethodID"],"label"=>"Shipping Method"));
echo $this->Form->input("SaturdayDelivery");
echo $this->Form->input("UserID",array("options"=>$users,"selected"=>$order["Order"]["UserID"],"label"=>"Sales Agent"));
echo $this->Form->input("DiscountPercentage");
echo $this->Form->input("ShippingAddress");
echo $this->Form->end("Update Order");
echo "</div>";
?>

Единственное, что не будет обновляться, это поле CampaignID, потому что это другая таблица.

кто-нибудь знает, как решить эту проблему?

Спасибо!

1

Решение

Вы не прошли CampaignCustomer данные в вашей форме, поэтому, когда будет сделан запрос на публикацию, обновлять его будет нечего CampaignCustomer

Вам необходимо включить эту информацию в форму в скрытых или видимых полях, чтобы обеспечить ее обновление.

 echo $this->Form->create();
echo $this->Form->input("Order.PurchaseOrderNumber");
echo $this->Form->input("Order.CampaignID",array("options"=>$campaigns,"label"=>"Campaign","selected"=>$order["Campaign"]["CampaignID"]));
echo $this->Form->input("Order.CreatedDate");
echo $this->Form->input("Order.rderType",array("options"=>$orderType,"selected"=>$order["Order"]["OrderType"]));
echo $this->Form->input("Order.OrderedBy");
echo $this->Form->input("Order.ShippingMethodID",array("options"=>$shipping_method_ids,"selected"=>$order["Order"]["ShippingMethodID"],"label"=>"Shipping Method"));
echo $this->Form->input("Order.SaturdayDelivery");
echo $this->Form->input("Order.UserID",array("options"=>$users,"selected"=>$order["Order"]["UserID"],"label"=>"Sales Agent"));
echo $this->Form->input("Order.DiscountPercentage");
echo $this->Form->input("Order.ShippingAddress");
echo $this->Form->input("CampaignCustomer.CampaignCustomerID");
echo $this->Form->input("CampaignCustomer.CampaignID");
echo $this->Form->input("CampaignCustomer.CustomerID");
echo $this->Form->end("Update Order");
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]