开发者

Zend One To Many doesn't work

开发者 https://www.devze.com 2023-04-03 02:55 出处:网络
I was trying an example of one to many relationship in zend framework, but I can\'t get results. Here are the tables:

I was trying an example of one to many relationship in zend framework, but I can't get results.

Here are the tables:

UsersTable:

<?php

class Application_Model_DbTable_UsersTable extends Zend_Db_Table_Abstract
{

    protected $_name = 'users';
    protected $_dependentTables = array('Application_Model_DbTable_BugsTable');

}

BugsTable:

class Application_Model_DbTable_BugsTable extends Zend_Db_Table_Abstract
{
    protected $_name = 'bugs';

  开发者_如何学运维  protected $_dependentTables = array('Application_Model_DbTable_BugsProductsTable');

    protected $_referenceMap    = array(
        'Reporter' => array(
            'columns'           => 'reported_by',
            'refTableClass'     => 'Application_Model_DbTable_UsersTable',
            'refColumns'        => 'username'
        ),
        'Engineer' => array(
            'columns'           => 'assigned_to',
            'refTableClass'     => 'Application_Model_DbTable_UsersTable',
            'refColumns'        => 'username'
        ),
        'Verifier' => array(
            'columns'           => array('verified_by'),
            'refTableClass'     => 'Application_Model_DbTable_UsersTable',
            'refColumns'        => array('username')
        )
        );

}

As you can see, this is one to many relationship from db table 'users' to table 'bugs' , where we have three foreign reference keys in bugs talbe.

Now when I try to use Zend methods for one to many relationships I always get empty results:

    $tableUser = new Application_Model_DbTable_UsersTable();
    $tableBugs = new Application_Model_DbTable_BugsTable();

    $result= $tableUser->find(1);
    $user= $result->current();
    $userBugs = $user->findDependentRowset('Application_Model_DbTable_BugsTable','Verifier');
    echo count($userBugs);  //returns 0

    $bugresult = $tableBugs->find(1);
    $thisbug= $bugresult->current();

    $verifier= $thisbug->findParentRow('Application_Model_DbTable_UsersTable','Verifier');
    return $verifier //returns nothing

The proper data is in the database, when I for example do a query:

select * from bugs b, users u where b.reported_by=u.id and u.id=1;

I get the expected results. But when I try in zend no results. Do you have any suggestions? Thanks.


In your sql u get bugs by field

reported_id

but in this code:

$result= $tableUser->find(1);
$user= $result->current();
$userBugs = $user->findDependentRowset('Application_Model_DbTable_BugsTable','Verifier');
echo count($userBugs);  //returns 0

$bugresult = $tableBugs->find(1);
$thisbug= $bugresult->current();

$verifier= $thisbug->findParentRow('Application_Model_DbTable_UsersTable','Verifier');
return $verifier //returns nothing

u try to get bug by

verified_by

field

try this:

$result= $tableUser->find(1);
$user= $result->current();
$userBugs = $user->findDependentRowset('Application_Model_DbTable_BugsTable','Reporter');
echo count($userBugs);
0

精彩评论

暂无评论...
验证码 换一张
取 消