$B$&$($d$^$G$9!#(B<br><br>$B:G6a!"$R$5$7$V$j$K(BS2Dao$B$G%W%m%0%i%`$r:n@.$7$@$7$^$7$?!#(B<br>$B$G!"$"$k%F!<%V%kMQ$N(BDao$B$H(BEntity$B$r:n@.$7$F(BDao$B$N(BfindAllArray$B$r(B<br>$B<B9T$9$k$H0J2<$N%(%i!<$,H/@8$7$^$7$?!#(B<br><br>$B$I$&$b!"(Bs2dao.core.classes.php$B$N(BcheckPrimaryKey()$B<B9T;~$K(BPK$B$,(B<br>$BDj5A$5$l$F$$$J$$$HH=CG$5$l$F%(%i!<$H$J$C$F$$$k$h$&$G$9!#(B<br>create table$BJ8$r8+$k8B$j(BPK$B@_Dj$7$F$$$^$9$7!&!&!&(B
<br><br>$B$3$l$+$iD4$Y$F$$$/$D$b$j$G$9$,!"2a5n$KF1$8$h$&$J$3$H$,5/$3$C$?$J$I(B<br>$B;29M$K$J$k$h$&$J>pJs$,$"$j$^$7$?$i65$($F$$$?$@$1$J$$$G$7$g$&$+!)(B<br><br>$B%F!<%V%kDj5A$,@5$7$$!J(BPK$BDj5A:Q$_!K$H$7$F!"(B$bmd-&gt;getPrimaryKeySize() == 0$B$H$J$k>u67$O(B<br>$B$I$N$h$&$JIT6q9g$,A[Dj$5$l$k$G$7$g$&$+!)!)(B<br><br><br>$B0J>e$G$9!#2?$i$+$NBP1~$r$7$F$$$?$@$1$?$i$"$j$,$?$$$G$9!#(B<br><br>S2Container$B$*$h$S(BS2Dao$B$O:G?7$r;HMQ$7$F$$$^$9!#(B
<br><br><br>--------------------------------$B0J2<!";29M>pJs(B-------------<br>$B#1!%H/@8$7$?%(%i!<(B<br><br>S2Dao_PrimaryKeyNotFoundRuntimeException<br>Description<br><br>PrimaryKey not found in UsersEntity<br>Source File<br><br>/Users/webadmin/lib/S2Dao/build/s2dao.php5/s2dao.core.classes.php (933)
<br><br>0922:&nbsp;&nbsp;&nbsp;&nbsp; protected function setupDeleteSql() {<br>0923:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;checkPrimaryKey();<br>0924:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf = &#39;&#39;;<br>0925:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf .= &#39;DELETE FROM &#39;;<br>0926:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf .= $this-&gt;getBeanMetaData()-&gt;getTableName();
<br>0927:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setupUpdateWhere($buf);<br>0928:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this-&gt;setSql($buf);<br>0929:&nbsp;&nbsp;&nbsp;&nbsp; }<br>0930:&nbsp;&nbsp;&nbsp;&nbsp; protected function checkPrimaryKey() {<br>0931:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $bmd = $this-&gt;getBeanMetaData();<br>0932:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($bmd-&gt;getPrimaryKeySize() == 0) {
<br>0933: throw new S2Dao_PrimaryKeyNotFoundRuntimeException($bmd-&gt;getBeanClass());<br>0934:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>0935:&nbsp;&nbsp;&nbsp;&nbsp; }<br>0936:&nbsp;&nbsp;&nbsp;&nbsp; protected function setupUpdateWhere(&amp;$buf) {<br>0937:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $bmd = $this-&gt;getBeanMetaData();
<br>0938:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf .= &#39; WHERE &#39;;<br>0939:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ($i = 0; $i &lt; $bmd-&gt;getPrimaryKeySize(); ++$i) {<br>0940:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf .= $bmd-&gt;getPrimaryKey($i);<br>0941:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf .= &#39; = ? AND &#39;;
<br>0942:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>0943:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf = preg_replace(&#39;/( AND )$/&#39;, &#39;&#39;, $buf);<br>0944:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($bmd-&gt;hasVersionNoPropertyType()) {<br>0945:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $pt = $bmd-&gt;getVersionNoPropertyType();
<br><br><br>Stack Trace<br><br>#0 /Users/webadmin/lib/S2Dao/build/s2dao.php5/s2dao.core.classes.php(907): S2Dao_AbstractAutoStaticCommand-&gt;checkPrimaryKey()<br>#1 /Users/webadmin/lib/S2Dao/build/s2dao.php5/S2Dao/S2Dao_UpdateAutoStaticCommand.class.php(47): S2Dao_AbstractAutoStaticCommand-&gt;setupUpdateSql()
<br>#2 /Users/webadmin/lib/S2Dao/build/s2dao.php5/s2dao.core.classes.php(840): S2Dao_UpdateAutoStaticCommand-&gt;setupSql()<br>#3 /Users/webadmin/lib/S2Dao/build/s2dao.php5/S2Dao/S2Dao_UpdateAutoStaticCommand.class.php(35): S2Dao_AbstractAutoStaticCommand-&gt;__construct(Object(S2Container_PDODataSource), Object(S2Dao_BasicStatementFactory), Object(S2Dao_BeanMetaDataImpl), Array)
<br>#4 /Users/webadmin/lib/S2Dao/build/s2dao.php5/S2Dao/S2Dao_DaoMetaDataImpl.class.php(235): S2Dao_UpdateAutoStaticCommand-&gt;__construct(Object(S2Container_PDODataSource), Object(S2Dao_BasicStatementFactory), Object(S2Dao_BeanMetaDataImpl), Array)
<br>#5 /Users/webadmin/lib/S2Dao/build/s2dao.php5/S2Dao/S2Dao_DaoMetaDataImpl.class.php(182): S2Dao_DaoMetaDataImpl-&gt;setupUpdateMethodByAuto(Object(ReflectionMethod))<br>#6 /Users/webadmin/lib/S2Dao/build/s2dao.php5/S2Dao/S2Dao_DaoMetaDataImpl.class.php(105): S2Dao_DaoMetaDataImpl-&gt;setupMethodByAuto(Object(ReflectionMethod))
<br>#7 /Users/webadmin/lib/S2Dao/build/s2dao.php5/S2Dao/S2Dao_DaoMetaDataImpl.class.php(87): S2Dao_DaoMetaDataImpl-&gt;setupMethod(Object(ReflectionMethod))<br>#8 /Users/webadmin/lib/S2Dao/build/s2dao.php5/S2Dao/S2Dao_DaoMetaDataImpl.class.php(77): S2Dao_DaoMetaDataImpl-&gt;setupSqlCommand()
<br>#9 /Users/webadmin/lib/S2Dao/build/s2dao.php5/s2dao.core.classes.php(1461): S2Dao_DaoMetaDataImpl-&gt;__construct(Object(ReflectionClass), Object(S2Container_PDODataSource), Object(S2Dao_BasicStatementFactory), Object(S2Dao_BasicResultSetFactory), Object(S2Dao_FieldAnnotationReaderFactory))
<br>#10 /Users/webadmin/lib/S2Dao/build/s2dao.php5/s2dao.core.classes.php(1505): S2Dao_DaoMetaDataFactoryImpl-&gt;getDaoMetaData(Object(ReflectionClass))<br>#11 /Users/webadmin/lib/S2Container/build/s2container.php5/s2container.core.classes.php(3056): S2DaoInterceptor-&gt;invoke(Object(S2Container_S2MethodInvocationImpl))
<br>#12 /Users/webadmin/lib/S2Container/build/s2container.php5/S2Container/S2Container_AopProxyGenerator.class.php(83) : eval()&#39;d code(24): S2Container_S2MethodInvocationImpl-&gt;proceed()<br>#13 /Users/webadmin/lib/S2Container/build/s2container.php5/S2Container/S2Container_AopProxyGenerator.class.php(83) : eval()&#39;d code(45): UserDaoEnhancedByS2AOP-&gt;__call(&#39;findAllArray&#39;, Array)
<br>#14 /Users/webadmin/public_html/s2prado/protected/logic/UserLogicImpl.class.php(18): UserDaoEnhancedByS2AOP-&gt;findAllArray()<br>#15 /Users/webadmin/public_html/s2prado/protected/pages/UserGrid.class.php(14): UserLogicImpl-&gt;findAllArray()
<br>#16 /Users/webadmin/lib/s2prado/prado/framework/TComponent.php(102): UserGrid-&gt;getData()<br>#17 /Users/webadmin/lib/s2prado/prado/framework/Web/UI/TControl.php(204): TComponent-&gt;__get(&#39;Data&#39;)<br>#18 /Users/webadmin/public_html/s2prado/protected/pages/UserGrid.class.php(32): TControl-&gt;__get(&#39;Data&#39;)
<br>#19 /Users/webadmin/lib/s2prado/prado/framework/Web/UI/TControl.php(1286): UserGrid-&gt;onLoad(NULL)<br>#20 /Users/webadmin/lib/s2prado/prado/framework/Web/UI/TPage.php(210): TControl-&gt;loadRecursive()<br>#21 /Users/webadmin/lib/s2prado/prado/framework/Web/UI/TPage.php(193): TPage-&gt;processNormalRequest(Object(THtmlWriter))
<br>#22 /Users/webadmin/lib/s2prado/Teeda/Web/Services/SPageService.php(108): TPage-&gt;run(Object(THtmlWriter))<br>#23 /Users/webadmin/lib/s2prado/Teeda/Web/Services/SPageService.php(96): SPageService-&gt;runPage(Object(UserGrid), Array)
<br>#24 /Users/webadmin/lib/s2prado/prado/framework/TApplication.php(1066): SPageService-&gt;run()<br>#25 /Users/webadmin/lib/s2prado/prado/framework/TApplication.php(376): TApplication-&gt;runService()<br>#26 /Users/webadmin/public_html/s2prado/index.php(29): TApplication-&gt;run()
<br>#27 {main}<br><br><br>$B#2!%BP>]$N%F!<%V%k(B<br><br>CREATE TABLE `users` (<br>&nbsp; `id` int(10) unsigned NOT NULL auto_increment,<br>&nbsp; `name` varchar(50) default NULL,<br>&nbsp; `email` varchar(255) character set utf8 collate utf8_bin NOT NULL default &#39;&#39;,
<br>&nbsp; `pwd` varchar(255) default NULL,<br>&nbsp; `profile` text,<br>&nbsp; `created` datetime default NULL,<br>&nbsp; `modified` datetime default NULL,<br>&nbsp; PRIMARY KEY&nbsp; (`id`),<br>&nbsp; UNIQUE KEY `email` (`email`)<br>) ENGINE=MyISAM&nbsp; DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
<br><br>$B#3!%BP>]$N%(%s%F%#%F%#%/%i%9(B<br><br>&lt;?php<br>class UsersEntity {<br>&nbsp;&nbsp;&nbsp; const TABLE = &quot;users&quot;;<br>&nbsp;&nbsp;&nbsp; public function __construct(){}<br><br>&nbsp;&nbsp;&nbsp; protected $id;<br>&nbsp;&nbsp;&nbsp; const id_COLUMN = &quot;id&quot;;<br>&nbsp;&nbsp;&nbsp; public function setId($val){$this-&gt;id = $val;}
<br>&nbsp;&nbsp;&nbsp; public function getId(){return $this-&gt;id;}<br><br>&nbsp;&nbsp;&nbsp; protected $name;<br>&nbsp;&nbsp;&nbsp; const name_COLUMN = &quot;name&quot;;<br>&nbsp;&nbsp;&nbsp; public function setName($val){$this-&gt;name = $val;}<br>&nbsp;&nbsp;&nbsp; public function getName(){return $this-&gt;name;}
<br><br>&nbsp;&nbsp;&nbsp; protected $email;<br>&nbsp;&nbsp;&nbsp; const email_COLUMN = &quot;email&quot;;<br>&nbsp;&nbsp;&nbsp; public function setEmail($val){$this-&gt;email = $val;}<br>&nbsp;&nbsp;&nbsp; public function getEmail(){return $this-&gt;email;}<br><br>&nbsp;&nbsp;&nbsp; protected $pwd;
<br>&nbsp;&nbsp;&nbsp; const pwd_COLUMN = &quot;pwd&quot;;<br>&nbsp;&nbsp;&nbsp; public function setPwd($val){$this-&gt;pwd = $val;}<br>&nbsp;&nbsp;&nbsp; public function getPwd(){return $this-&gt;pwd;}<br><br>&nbsp;&nbsp;&nbsp; protected $profile;<br>&nbsp;&nbsp;&nbsp; const profile_COLUMN = &quot;profile&quot;;
<br>&nbsp;&nbsp;&nbsp; public function setProfile($val){$this-&gt;profile = $val;}<br>&nbsp;&nbsp;&nbsp; public function getProfile(){return $this-&gt;profile;}<br><br>&nbsp;&nbsp;&nbsp; protected $created;<br>&nbsp;&nbsp;&nbsp; const created_COLUMN = &quot;created&quot;;<br>&nbsp;&nbsp;&nbsp; public function setCreated($val){$this-&gt;created = $val;}
<br>&nbsp;&nbsp;&nbsp; public function getCreated(){return $this-&gt;created;}<br><br>&nbsp;&nbsp;&nbsp; protected $modified;<br>&nbsp;&nbsp;&nbsp; const modified_COLUMN = &quot;modified&quot;;<br>&nbsp;&nbsp;&nbsp; public function setModified($val){$this-&gt;modified = $val;}<br>
&nbsp;&nbsp;&nbsp; public function getModified(){return $this-&gt;modified;}<br><br><br>&nbsp;&nbsp;&nbsp; public function __toString() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf = array();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf[] = &#39;id =&gt; &#39; . $this-&gt;getId();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf[] = &#39;name =&gt; &#39; . $this-&gt;getName();
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf[] = &#39;email =&gt; &#39; . $this-&gt;getEmail();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf[] = &#39;pwd =&gt; &#39; . $this-&gt;getPwd();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf[] = &#39;profile =&gt; &#39; . $this-&gt;getProfile();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf[] = &#39;created =&gt; &#39; . $this-&gt;getCreated();
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $buf[] = &#39;modified =&gt; &#39; . $this-&gt;getModified();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#39;{&#39; . implode(&#39;, &#39;,$buf) . &#39;}&#39;;<br>&nbsp;&nbsp;&nbsp; }<br><br><br>&nbsp;&nbsp;&nbsp; /*<br>&nbsp;&nbsp;&nbsp; private $prop;<br>&nbsp;&nbsp;&nbsp; const prop_RELNO = 0;
<br>&nbsp;&nbsp;&nbsp; const prop_RELKEYS = &#39;this_fk:other_pk&#39;;<br>&nbsp;&nbsp;&nbsp; public function setProp(OtherEntity $entity){ $this-&gt;prop = $entity; }<br>&nbsp;&nbsp;&nbsp; public function getProp(){ return $this-&gt;prop; }<br>&nbsp;&nbsp;&nbsp; */<br>}<br><br>$B#4!%BP>]$N(BDao
<br>&lt;?php<br>interface UserDao {<br>&nbsp;&nbsp;&nbsp; const BEAN = &quot;UsersEntity&quot;;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; public function findAllList();<br>&nbsp;&nbsp;&nbsp; public function findAllArray();<br>&nbsp;&nbsp;&nbsp; public function update(UsersEntity $entity);<br>
&nbsp;&nbsp;&nbsp; public function insert(UsersEntity $entity);<br>&nbsp;&nbsp;&nbsp; public function delete(UsersEntity $entity);<br>}<br>?&gt;<br><br>$B0J>e$G$9!#(B<br>-- <br>------------------------------------------------------------------<br>&nbsp;&nbsp;$B?";3!!G=@.(B@$BJ!2,(B<br>
$B!!(Bmailto:<a href="mailto:ueyama@gmail.com">ueyama@gmail.com</a><br>------------------------------------------------------------------<br>