Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
Watched Topics
FAQ
Поиск
Пользователи
Группы
Регистрация
Профиль
Войти и проверить личные сообщения
Вход
Список форумов Cake-PHP.ru
->
Общий
Ответить
Имя
Тема
Сообщение
Смайлики
Дополнительные смайлики
Цвет шрифта:
По умолчанию
Тёмно-красный
Красный
Оранжевый
Коричневый
Жёлтый
Зелёный
Оливковый
Голубой
Синий
Тёмно-синий
Индиго
Фиолетовый
Белый
Чёрный
Размер шрифта:
Размер шрифта
Очень маленький
Маленький
Обычный
Большой
Огромный
Закрыть теги
[quote="Hellbot"]А можно код в котором ошибка (указаный файлег) ? из того что видно, проблема в [quote]C:\Apache2\Apache2\htdocs\kawartha\dcm\app\views\back_orders\index.thtm [/quote] А не в связях вовсе.[/quote]
Настройки
HTML
ВЫКЛЮЧЕН
BBCode
ВКЛЮЧЕН
Смайлики
ВКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Отключить в этом сообщении смайлики
Если у вас плохое зрение или вы не можете прочесть этот код по какой-то другой причине, то обратитесь за помощью к
Администратору
.
Код подтверждения: *
Введите код в точности так, как вы его видите. Код является регистро-зависимым, а символ нуля имеет косую линию внутри цифры.
Часовой пояс: GMT + 3
Перейти:
Выберите форум
CakePHP Форум
----------------
Общий
Установка и настройка
Творчество
Вопросы и пожелания
Комментарии к главам руководства по CakePHP 1.1
Обзор темы
Автор
Сообщение
atas
Добавлено: 02 Июн 2008 17:54:36
Заголовок сообщения:
to Administrator
hotel neskolko raz u Vas na sajte zaregistrirovatsja, no kazdij raz viletaet soobshenie:
Цитата:
Вы исчерпали предельное количество попыток регистрации для данной сессии. Повторите попытку позднее.
atas
Добавлено: 02 Июн 2008 17:49:29
Заголовок сообщения:
to Hellbot
na etom zaprose
Цитата:
SELECT `BackOrder`.`id`, `BackOrder`.`route_code`, `BackOrder`.`product_id`, `BackOrder`.`back_order_quantity`, `BackOrder`.`production_id`, `BackOrder`.`invoice_id`, `Invoice`.`id`, `Invoice`.`invoices_date`, `Invoice`.`customer_id`, `Invoice`.`route_code`, `Invoice`.`salesman_id`, `Invoice`.`exported_flag`, `Invoice`.`PO_number`, `Invoice`.`shipment_date`, `Invoice`.`exported_flag_quickbooks` FROM `back_orders` AS `BackOrder` LEFT JOIN `invoices` AS `Invoice` ON (`BackOrder`.`invoice_id` = `Invoice`.`id`) WHERE 1 = 1 ORDER BY `id` DESC LIMIT 10
vipadaet oshibka
Цитата:
1052: Column 'id' in order clause is ambiguous
No esli ja ruchkami podpravil kod (v meste ORDER BY id) vot tak:
Код:
SELECT `BackOrder`.`id`, `BackOrder`.`route_code`, `BackOrder`.`product_id`, `BackOrder`.`back_order_quantity`, `BackOrder`.`production_id`, `BackOrder`.`invoice_id`, `Invoice`.`id`, `Invoice`.`invoices_date`, `Invoice`.`customer_id`, `Invoice`.`route_code`, `Invoice`.`salesman_id`, `Invoice`.`exported_flag`, `Invoice`.`PO_number`, `Invoice`.`shipment_date`, `Invoice`.`exported_flag_quickbooks` FROM `back_orders` AS `BackOrder` LEFT JOIN `invoices` AS `Invoice` ON (`BackOrder`.`invoice_id` = `Invoice`.`id`) WHERE 1 = 1 ORDER BY `BackOrder`.`id` DESC LIMIT 10
to sql zarabotal. Znachit kak Vi i pisali u menja problema v controllere
Цитата:
$this->set('back_orders', $this->BackOrder->findAll(null, null, "id DESC", $records_per_page, $page));
ispravil na :
Цитата:
$this->set('back_orders', $this->BackOrder->findAll(null, null, "BackOrder.id DESC", $records_per_page, $page));
i vse Zarabotalo.
Spasibo Vam bolshoe
Hellbot
Добавлено: 02 Июн 2008 17:29:48
Заголовок сообщения:
Возможно у вас $this->BackOrder->findAll возвращает false или пустой результат, потому что выполняется не корректный запрос.
Hellbot
Добавлено: 02 Июн 2008 17:25:28
Заголовок сообщения:
Я не знаю каким образом проверить это у себя.
Если таблица
Invoices - что-то там внутри не важно
и таблица
BackOrders
с полями id и invoice_id - то маппинг прописан правильно (foreignKey = invoice_id).
Вообще надо смотреть запрос SQL который генерирует cake (debug = 2)
atas
Добавлено: 02 Июн 2008 17:10:40
Заголовок сообщения:
to Hellbot
Цитата:
Да в том то все и дело, что маппинг сделан визуально правильно, ничего там такого не работающего нету.
kak nado? tak:
Код:
var $belongsTo = array(
'Invoice' => array(
'className' => 'Invoice',
'foreignKey' => 'invoice_id'
)
);
ili tak:
Код:
var $belongsTo = array(
'Invoice' => array(
'className' => 'Invoice',
'foreignKey' => 'id'
)
);
vot kod na index action back_orders_controller.php
Код:
function index($page = 1)
{
//$this->checkSession(); //authorization
// $this->checkRole(1); //authorization
///////------paging-------//////
$records_per_page = $this->INNT_getRecordsPerPage();
///////------/paging-------//////
$this->set('products_key_value', $this->INNT_getListproduct());
$this->set('productsSKU_key_value', $this->INNT_getListproductSKU());
$this->set('back_orders', $this->BackOrder->findAll(null, null, "id DESC", $records_per_page, $page));
$this->set('page',$page);
///////------paging-------//////
$records_count = $this->BackOrder->findCount();
$this->set('paging_line', $this->INNT_table_paging_line($page, $records_count, $records_per_page));
///////------/paging-------//////
// ------ save current page for pagination ------- //
$_SESSION["current_page_back_orders"] = $page;
// ---/--- save current page for pagination ------- //
}
kak ja i pisal v pervom voste: esli ja komentiruju mapping, to vse rabotaet velikolepno, tolko net svjazki mezhdu tablitsami, a eto delaetsja mappingom. ili ja choto ne doponimaju?
spasibo
Hellbot
Добавлено: 02 Июн 2008 16:58:39
Заголовок сообщения:
Да в том то все и дело, что маппинг сделан визуально правильно, ничего там такого не работающего нету.
обратный мапинг от BackOffers к Invoice вообще не имеет значения в данном случае.
Тогда если можно, код контроллера для данного action и запросы SQL которые получаются в ходе действия.
atas
Добавлено: 02 Июн 2008 16:57:19
Заголовок сообщения:
K state u menja cakePHP 1.1 na versiju cakePHP 1.2 shas perejti ne mogu po tehnicheskim i moralno-eticheskim prichinam
atas
Добавлено: 02 Июн 2008 16:54:25
Заголовок сообщения:
to Hellbot
Код:
<h2>Back Orders</h2>
<?php echo $html->link("Add back Order", "/back_orders/add"); ?>
<br>
<?php echo $html->link("Advanced search", "/back_orders/adv_search"); ?>
<br><br>
<table cellpadding="0" cellspacing="0" id="grid">
<tr bgcolor = "Gray">
<th>Id</th>
<th>Route Code</th>
<th>SKU</th>
<th>Product Description</th>
<th>Quantity</th>
<th> </th>
</tr>
<?php foreach ($back_orders as $back_order): ?>
<tr>
<td><?php echo $back_order['BackOrder']['id']; ?></td>
<td>
<?php echo $back_order['BackOrder']['route_code']; ?>
</td>
<td>
<?php
echo $productsSKU_key_value[$back_order['BackOrder']['product_id']];
?>
</td>
<td>
<?php
echo $products_key_value[$back_order['BackOrder']['product_id']];
?>
</td>
<td>
<?php echo $back_order['BackOrder']['back_order_quantity']; ?>
</td>
<td>
<?php echo $html->link(
$html->image('../../kawartha/dcm/app/webroot/img/edit.gif'),
"/back_orders/edit/{$back_order['BackOrder']['id']}", null, null, false)?>
<?php echo $html->link(
$html->image('../../kawartha/dcm/app/webroot/img/delete.gif'),
"/back_orders/delete/{$back_order['BackOrder']['id']}",
null,
'Are you sure?', false
)?>
<?php echo $html->link(
$html->image('../../kawartha/dcm/app/webroot/img/release.gif'),
"/back_orders/release_b_o/{$back_order['BackOrder']['id']}/{$back_order['BackOrder']['product_id']}/" . $back_order['BackOrder']['back_order_quantity'] . '/' . $page, null, null, false)?>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php
echo "<p>" . $paging_line . "</p>";
?>
v sluchae nepravilnogo mappinga v massive $back_orders nichego net, poetomu i vipodaet oshibka. Problema ne v dobavlenii
Код:
if ($back_orders)
{
ta ta ta
}
i oshibki ne budet vidno
a kak sdelat pravilno mapping?
atas
Добавлено: 02 Июн 2008 16:46:50
Заголовок сообщения:
to Алесь
Цитата:
А тебе точно подходит $hasMany? Может тебе нужно $HBTM?
Vozmozhno, ja ne ochen to silen v ORM, esli s $HBTM kak budet viglajadit dlja moego sluchaja?
spasibo
Hellbot
Добавлено: 02 Июн 2008 16:44:34
Заголовок сообщения:
А можно код в котором ошибка (указаный файлег) ?
из того что видно, проблема в
Цитата:
C:\Apache2\Apache2\htdocs\kawartha\dcm\app\views\back_orders\index.thtm
А не в связях вовсе.
Алесь
Добавлено: 02 Июн 2008 16:28:35
Заголовок сообщения:
А тебе точно подходит $hasMany? Может тебе нужно $HBTM?
atas
Добавлено: 02 Июн 2008 16:18:22
Заголовок сообщения:
to Алесь spasibo!!
Probival, ne pomoglo. Voobshe to, mne kazhetsja, nado 'foreignKey' => 'invoice_id', no vozmozhno ja i oshibajus.
Budut drugie predlozhenija?
Spasibo
Алесь
Добавлено: 02 Июн 2008 13:36:56
Заголовок сообщения:
Попробуй так:
Код:
var $belongsTo = array(
'Invoice' => array(
'className' => 'Invoice',
'foreignKey' => 'id'
)
);
atas
Добавлено: 02 Июн 2008 01:07:10
Заголовок сообщения: cakePHP relational mapping problem
Здравствуйте!
У меня проблема с relational mapping в cakePHP например для Invoice модели описываю отношение один к многим с InvoiceItem, BackOrder и WorkOrder
Код:
var $hasMany = array ('InvoiceItem' => array(
'className' => 'InvoiceItem',
'conditions'=>'',
'order'=>'',
'foreignKey'=>'invoice_id'
),
'BackOrder' => array(
'className' => 'BackOrder',
'conditions'=>'',
'order'=>'',
'foreignKey'=>'invoice_id'
),
'WorkOrder' => array(
'className' => 'WorkOrder',
'conditions'=>'',
'order'=>'',
'foreignKey'=>'invoice_id'
)
);
Соответственно в моделях InvoiceItem, BackOrder и WorkOrder (в каждой из них) записываю:
Код:
var $belongsTo = array(
'Invoice' => array(
'className' => 'Invoice',
'foreignKey' => 'invoice_id'
)
);
С InvoiceItem все работает хорошо, а с BackOrder и WorkOrder не отображаются даже данные.
Пишет:
Код:
Warning: Invalid argument supplied for foreach() in C:\Apache2\Apache2\htdocs\kawartha\dcm\app\views\back_orders\index.thtm
Как толко коментирую BackOrder и WorkOrder в $hasMany и var $belongsTo в соответствуюших моделях. То данные отображаются.
Как настроит связку один ко многим во всех трех моделях?
Спасибо.
Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB
Если ничего интересного не нашли, можно рекламу почитать, а рекламируется у нас сегодня «».