0

私が書いた 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();

しかし、これもハングします。

気がおかしくなりそうだ。私は何を間違っていますか?

4

0 に答える 0