yang2007chun 0 Posted April 7, 2013 Report Share Posted April 7, 2013 Hi Larry, When I test the DAO in your book: (page 186) $q = 'SELECT * FROM page WHERE id=1'; $cmd = Yii::app()->db->createCommand($q); $cmd->setFetchMode(PDO::FETCH_CLASS, 'Page'); $model = $cmd->queryRow(); // Use $model->title et al. I can not retrieve $model->title which is null. Also, I use $model-> attributes, the result is : Array ( [live] => 0 [id] => [user_id] => [title] => [content] => [date_updated] => [date_published] => ) Strangely, only 'live' is not null. The expected result is: Array ( [id] => 1 [user_id] => 1 [live] => 0 [title] => ewwq [content] => wsds [date_updated] => 2013-04-04 23:48:50 [date_published] => 2013-04-04 ) I use other tables and corresponding class to test, it also dose not work. I really hope you can explain it. By the way, I really appreciate your work. Thank You Chun Quote Link to post Share on other sites
Antonio Conte 426 Posted April 7, 2013 Report Share Posted April 7, 2013 With that result, you need to use the result as an array, i.e $model['title'] instead of $model->title. According to someone one the YII forum, you need to switch from PDO::FETCH_CLASS to PDO::FETCH_OBJ. You might need to bind that param too. I don't know. Quote Link to post Share on other sites
yang2007chun 0 Posted April 8, 2013 Author Report Share Posted April 8, 2013 Thank you Antonio.1. I have tried PDO::FETCH_OBJ, it returns an stdClass Object. And it works 2. I tried $model['title'] with PDO::FETCH_CLASS , it won't work, since $model is a Page AR object. What I want to get is a Page AR object with correct properties using DAO(I know how to do the same thing using AR instead of DAO). Since Larry mentioned DAO has "the ability to fetch into specific object types". And I really want to make it work ,but did not get the right answer . Again, thank you! Quote Link to post Share on other sites
Larry 428 Posted April 12, 2013 Report Share Posted April 12, 2013 I thought that worked for me. If you're still having problems with this, let me know and I'll go back and see what I did. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.