私が書いた MVC フレームワーク アプリの「モデル」として Doctrine を使用しようとしています。
「ラック」レコードごとに「空きスペース」レコードを保存したい状況があります。Rack_id から freespace レコードを取得できるようにしたい。
これが私のテーブルです。
create table if not exists freespace (
id int(11) unsigned not null auto_increment,
rack_id int(11) unsigned not null,
-- other fields
primary key (id),
unique key (rack_id)
);
Doctrine クラスをいくつか作りました...
BaseFreespace.php
abstract class BaseFreespace extends Doctrine_Record {
public function setTableDefinition()
{
$this->setTableName('freespace');
$this->hasColumn('id', 'integer', 11, array(
'type' => 'integer',
'length' => 11,
'fixed' => false,
'unsigned' => true,
'primary' => true,
'autoincrement' => true,
));
$this->hasColumn('rack_id', 'integer', 11, array(
'type' => 'integer',
'length' => 11,
'fixed' => false,
'unsigned' => true,
'primary' => false,
'notnull' => true,
'notblank' => true,
'autoincrement' => false,
));
// other fields
}
}
Freespace.php
class Freespace extends BaseFreespace {
public function findByRackId($rack_id = 0) {
//die(var_dump($rack_id));
$res = $this->getTable()->findBy('rack_id', $rack_id);
die(var_dump($res));
}
}
クライアントコードから、私が言うと:
$freespace = new Freespace();
$rackFreeSpace = $freespace->findByRackId($rack_id);
...その後、Apache が接続をリセットするまでハングします。die(var_dump($rack_id)) をコメントアウトすると、すぐに死にます。
私は試した:
$res = $this->getTable()->findBy(array('rack_id', $rack_id));
ドキュメントでオンラインでそれを見ました-しかしDoctrineはそのような引数を望んでいません-間違ったドキュメントバージョンであったに違いありません。
私は試した:
$q = Doctrine_Query::create()
->from('Freespace')
->where('rack_id = ?', $rack_id);
$result = $q->fetchOne();
しかし、これもハングします。
気がおかしくなりそうだ。私は何を間違っていますか?