Yii Framework Forum: Postgresql Orm Doesn't Have Any Exception Control - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Postgresql Orm Doesn't Have Any Exception Control Rate Topic: -----

#1 User is offline   netseeker 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 18-November 12

Posted 26 November 2012 - 09:19 PM

Hi,

I have a geo-spatial project and I decided to use postgreSql rather than mysql and the way you implemented the ORM for postgres is loose and has loads of unexpected errors.

For example if I try to enter an invalid data or an invalid key I will redirected to exception page rather than getting a proper error msg inside form.
this is my connection string, let me know if you need further information
		'db'=>array(
			'connectionString' => 'pgsql:host=localhost;port=5432;dbname=db',

			'username' => 'postgres',
			'password' => '123456',
			'charset' => 'utf8',
		),


Best
0

#2 User is offline   samdark 

  • Having fun
  • Yii
  • Group: Yii Dev Team
  • Posts: 3,782
  • Joined: 17-January 09
  • Location:Russia

Posted 27 November 2012 - 06:19 AM

All DB drivers are working the same way throwing exceptions. If you need you can use try-catch to handle these. As for form fields and errors, there are validation rules that should be enough to make sure all data is fine before saving it.
Yii 1.1 Application Development Cookbook

Enjoying Yii? Star us at github: 1.1 and 2.0.
0

#3 User is offline   netseeker 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 18-November 12

Posted 27 November 2012 - 08:12 PM

No it's not work the same way

In my particular example when I create a field in postgreSql with type of Point.

when I want to search it using the regular CRUD search tool I always get such error :
Error 500: <h1>CDbException</h1>
<p>CDbCommand failed to execute the SQL statement: SQLSTATE[42883]: Undefined function: 7 ERROR:  operator does not exist: point ~~ unknown
LINE 1: SELECT COUNT(*) FROM "advertise" "t" WHERE lat_lon LIKE $1
                                                           ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.. The SQL statement executed was: SELECT COUNT(*) FROM "advertise" "t" WHERE lat_lon LIKE :ycp0 (/var/www/yii/framework/db/CDbCommand.php:528)</p><pre>#0 /var/www/yii/framework/db/CDbCommand.php(425): CDbCommand->queryInternal('fetchColumn', 0, Array)
#1 /var/www/yii/framework/db/ar/CActiveRecord.php(1540): CDbCommand->queryScalar()
#2 /var/www/yii/framework/web/CActiveDataProvider.php(179): CActiveRecord->count(Object(CDbCriteria))
#3 /var/www/yii/framework/web/CDataProvider.php(193): CActiveDataProvider->calculateTotalItemCount()
#4 /var/www/yii/framework/web/CActiveDataProvider.php(129): CDataProvider->getTotalItemCount()
#5 /var/www/yii/framework/web/CDataProvider.php(137): CActiveDataProvider->fetchData()
#6 /var/www/yii/framework/zii/widgets/CBaseListView.php(108): CDataProvider->getData()
#7 /var/www/yii/framework/zii/widgets/grid/CGridView.php(289): CBaseListView->init()
#8 /var/www/yii/framework/web/CBaseController.php(148): CGridView->init()
#9 /var/www/yii/framework/web/CBaseController.php(173): CBaseController->createWidget('zii.widgets.gri...', Array)
#10 /var/www/blog/protected/views/advertise/admin.php(58): CBaseController->widget('zii.widgets.gri...', Array)
#11 /var/www/yii/framework/web/CBaseController.php(127): require('/var/www/blog/p...')
#12 /var/www/yii/framework/web/CBaseController.php(96): CBaseController->renderInternal('/var/www/blog/p...', Array, true)
#13 /var/www/yii/framework/web/CController.php(870): CBaseController->renderFile('/var/www/blog/p...', Array, true)
#14 /var/www/yii/framework/web/CController.php(783): CController->renderPartial('admin', Array, true)
#15 /var/www/blog/protected/controllers/AdvertiseController.php(143): CController->render('admin', Array)
#16 /var/www/yii/framework/web/actions/CInlineAction.php(50): AdvertiseController->actionAdmin()
#17 /var/www/yii/framework/web/CController.php(309): CInlineAction->runWithParams(Array)
#18 /var/www/yii/framework/web/filters/CFilterChain.php(134): CController->runAction(Object(CInlineAction))
#19 /var/www/yii/framework/web/filters/CFilter.php(41): CFilterChain->run()
#20 /var/www/yii/framework/web/CController.php(1146): CFilter->filter(Object(CFilterChain))
#21 /var/www/yii/framework/web/filters/CInlineFilter.php(59): CController->filterAccessControl(Object(CFilterChain))
#22 /var/www/yii/framework/web/filters/CFilterChain.php(131): CInlineFilter->filter(Object(CFilterChain))
#23 /var/www/yii/framework/web/CController.php(292): CFilterChain->run()
#24 /var/www/yii/framework/web/CController.php(266): CController->runActionWithFilters(Object(CInlineAction), Array)
...


I think the yii's ORM needs to take care of this kind of special datatypes as well if I want to write sql statement for these special cases then what is the usage of framework?
0

#4 User is offline   samdark 

  • Having fun
  • Yii
  • Group: Yii Dev Team
  • Posts: 3,782
  • Joined: 17-January 09
  • Location:Russia

Posted 28 November 2012 - 03:37 AM

https://github.com/y...yii/issues/1767
Yii 1.1 Application Development Cookbook

Enjoying Yii? Star us at github: 1.1 and 2.0.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users