如何在Magento Collection中将字段选择查询添加为字段

Eli*_*isa 4 magento

我叫Magento系列mymodule/class.我有两个表class,student在我的Magento数据库中.

班级表:

id     clas_name
Run Code Online (Sandbox Code Playgroud)

学生表:

id   class_id    student_name
Run Code Online (Sandbox Code Playgroud)

class_id在student表中是id类表中的外键.

我想制作mymodule/class集合,以便sql如下所示:

select a.*, (select count(id) FROM studetn 
                WHERE class_id = a.id) as student_count 
FROM class a
Run Code Online (Sandbox Code Playgroud)

或者,我想mymodule/class从上面的sql.

怎么做任何建议?

Kri*_*war 8

您似乎必须在查询中添加列.在已经有集合的场景中,让我们假设您的$ collection变量如下:

$collection = Mage::getModel("mymodule/class")->getCollection()
Run Code Online (Sandbox Code Playgroud)

所以,你必须修改如下的查询:

$collection->getSelect()->columns(
        array(
            'student_count' => new Zend_Db_Expr('(SELECT count(id) FROM student WHERE class_id=main_table.id)'
        )));
Run Code Online (Sandbox Code Playgroud)

上面的表达式将在您编写时生成查询.