Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Использование оператора AS в Kohana 3.2 (3.3)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Помогите сформировать запрос SQL
Kips
Отправлено: 24 Июля, 2013 - 13:27:11
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Нужно выполнить вот такой запрос SQL с помощью ORM Kohana 3.2 (3.3):

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * , addresses.last_name AS address_last_name, addresses.first_name AS address_first_name, users.last_name AS user_last_name, users.first_name AS user_first_name
  2. FROM orders
  3. LEFT JOIN addresses ON orders.address_id = addresses.id
  4. LEFT JOIN users ON orders.user_id = users.id




Почему не выполняет вот так?

PHP:
скопировать код в буфер обмена
  1.  
  2. ORM::factory('Order')
  3.                ->select('*',
  4.                'addresses.last_name AS address_last_name',
  5.                'addresses.first_name AS address_first_name',
  6.                'users.last_name AS user_last_name',
  7.                'users.first_name AS user_first_name')
  8.                ->join('addresses','LEFT')
  9.                ->on('order.address_id','=','addresses.id')
  10.                ->join('users','LEFT')
  11.                ->on('order.user_id','=','users.id')
  12.                ->find_all();
  13.  




Выводит вот такую ошибку:

Database_Exception [ 1054 ]: Unknown column 'addresses.last_name AS address_last_name' in 'field list' [ SELECT *, `addresses`.`last_name AS address_last_name`, `addresses`.`first_name AS address_first_name`, `users`.`last_name AS user_last_name`, `users`.`first_name AS user_first_name`, `order`.`id` AS `id`, `order`.`user_id` AS `user_id`, `order`.`token` AS `token`, `order`.`status` AS `status`, `order`.`address_id` AS `address_id`, `order`.`created` AS `created` FROM `orders` AS `order` LEFT JOIN `addresses` ON (`order`.`address_id` = `addresses`.`id`) LEFT JOIN `users` ON (`order`.`user_id` = `users`.`id`) ]



У меня предположение, может kohana не умеет обрабатывать оператор AS в select'e? Но как тогда сделать?

(Отредактировано автором: 24 Июля, 2013 - 13:34:13)

 
 Top
VenZell
Отправлено: 24 Июля, 2013 - 13:35:12
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




А попробуйте вот так:
PHP:
скопировать код в буфер обмена
  1. ORM::factory('Order')
  2. ->select('SELECT * ,
  3.                  addresses.last_name AS address_last_name,
  4.                  addresses.first_name AS address_first_name,
  5.                  users.last_name AS user_last_name,
  6.                  users.first_name AS user_first_name')
  7. ->join('addresses','LEFT')
  8. ->on('order.address_id','=','addresses.id')
  9. ->join('users','LEFT')
  10. ->on('order.user_id','=','users.id')
  11. ->find_all();
 
 Top
Kips
Отправлено: 24 Июля, 2013 - 14:11:37
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




VenZell, если бы всё так просто было бы, но нет... Не работает, ни так:
PHP:
скопировать код в буфер обмена
  1. ORM::factory($this->_object_name)
  2.                 ->select('* ,
  3.                         addresses.last_name AS address_last_name,
  4.                         addresses.first_name AS address_first_name,
  5.                         users.last_name AS user_last_name,
  6.                         users.first_name AS user_first_name')
  7.                 ->join('addresses','LEFT')
  8.                 ->on('order.address_id','=','addresses.id')
  9.                 ->join('users','LEFT')
  10.                 ->on('order.user_id','=','users.id')
  11.                 ->find_all();


и ни так:
PHP:
скопировать код в буфер обмена
  1. ORM::factory($this->_object_name)
  2.                 ->select('SELECT * ,
  3.                         addresses.last_name AS address_last_name,
  4.                         addresses.first_name AS address_first_name,
  5.                         users.last_name AS user_last_name,
  6.                         users.first_name AS user_first_name')
  7.                 ->join('addresses','LEFT')
  8.                 ->on('order.address_id','=','addresses.id')
  9.                 ->join('users','LEFT')
  10.                 ->on('order.user_id','=','users.id')
  11.                 ->find_all();
 
 Top
VenZell
Отправлено: 24 Июля, 2013 - 14:21:13
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




Kips, а вот так?
PHP:
скопировать код в буфер обмена
  1. ORM::factory('Order')
  2. ->select('*',
  3.           /* name | alias */
  4.           array('addresses.last_name', 'address_last_name'),
  5.           array('addresses.first_name', 'address_first_name'),
  6.           array('users.last_name', 'user_last_name'),
  7.           array('users.first_name', 'user_first_name')
  8.         )
  9. ->join('addresses','LEFT')
  10. ->on('order.address_id','=','addresses.id')
  11. ->join('users','LEFT')
  12. ->on('order.user_id','=','users.id')
  13. ->find_all();

(Отредактировано автором: 24 Июля, 2013 - 14:22:12)

 
 Top
Kips
Отправлено: 24 Июля, 2013 - 14:25:09
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




VenZell пишет:
Kips, а вот так?

Kips, Ура, заработала!!! Спасибо.
Не подскажите, как вы нашли решение, есть где-то документация о которой я не знаю или копались в исходниках kohan'ы?

(Отредактировано автором: 24 Июля, 2013 - 14:35:05)

 
 Top
VenZell
Отправлено: 24 Июля, 2013 - 14:36:34
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




Да где же он корректный?
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `* , addresses`.`last_name AS address_last_name

Вместо
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * , `addresses`.`last_name` AS `address_last_name`



С Коханой не работал, просто документацию почитал: http://kohanaframework[dot]org/3[dot]1/g[dot][dot][dot]se/query/builder

(Отредактировано автором: 24 Июля, 2013 - 14:37:15)

 
 Top
Kips
Отправлено: 24 Июля, 2013 - 14:57:57
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




VenZell пишет:
С Коханой не работал, просто документацию почитал: http://kohanaframework.org/3.1/g...se/query/builder

Вы убили мою самооценку... Радость Радость Радость
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB