getFirst в Symfony ничего не возвращает - PullRequest
0 голосов
/ 03 ноября 2011

У меня есть вопрос о Symfony.Я работаю над сайтом, и все шло отлично, когда внезапно, даже не трогая, все прекратилось.Я сужу это до проблемы в моей функции "getClient".Вот код: (я использую doAuthPlugin, если это имеет значение)

в: app / client / lib / myUser.class.php:

public function getClient()
{

    $uTemp = $this->getAccount()->getClients()->getFirst();

    $userId = $uTemp['_data']['userid'];

    $q = Doctrine_Query::create()
        ->from('Client c')
        ->where('c.id  = ?', $userId);

    $result = $q->fetchArray();

    if(sizeof($result) > 0){

        return $this->getAccount()->getClients()->getFirst();
    }else{

        return false;
    }
}

В первой строке $ uTemp ==ложный.Хотя что-то есть в $ this-> getAccount () -> getClients ().

Если кто-то может пролить свет на это, я действительно отстой с Symfony!: p

Спасибо!

РЕДАКТИРОВАТЬ:

Вот учетная запись get:

public function getAccount()
{
   if (!$this->user && $id = $this->getAttribute('user_id', null, 'doUser'))
   {
      $this->user = Doctrine::getTable('User')->find($id);

      if (!$this->user)
      {
        // the user does not exist anymore in the database
        $this->signOut();

        throw new sfException('The user does not exist anymore in the database.');
      }
    }

   return $this->user;
 }

Я не могу найти getClients, он автоматически генерируется Symfony (и так какЯ не знаю Symfony так много ...)

РЕДАКТИРОВАТЬ 2:

, если я сделаю var_dump для $ this-> getAccount-> getClients (), он будет пуст:

object(Client)#123 (18) {
  ["_node":protected]=>
  NULL
  ["_id":protected]=>
  array(0) {
  }
  ["_data":protected]=>
  array(14) {
    ["id"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["userid"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["name"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["firstname"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["phone"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["cellphone"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["postalcode"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["experience"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["connexe"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["formation"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["cv_file"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["is_active"]=>
    int(0)
    ["created_at"]=>
    object(Doctrine_Null)#12 (0) {
    }
    ["updated_at"]=>
    object(Doctrine_Null)#12 (0) {
    }
}

Но $ this-> getAccount возвращает что-то

1 Ответ

0 голосов
/ 03 ноября 2011

возможно getFirst () не работает с fetchArray (). изменить это на:

$result = $q->execute();

возможно это также работает с fetchArray ():

if(sizeof($result) > 0){

    return $result['Account']['Clients'][0];
}else{

    return false;
}

Извините, моя ошибка.

если вы используете $ this-> getAccount () -> getClients (), то также NULL? может быть $ this-> getAccount () -> getClients () вернет NULL?

UPDATE:

$ uTemp = $ this-> getAccountId (); // (я не знаю ваш schema.yml)

в ClientsTable.class.php:

public function getClientsAccount($id) 
    {        
        $q = $this->createQuery('u')
            ->where('u.client_id = ?', $id);

        return $q->execute();        
    } 

и далее в myUser.class.php вы можете использовать:

$clients = $this->getAccountId(); // (i dont know your schema.yml)

$uTemp = Doctrine_Core::getTable('Clients')->getClientsAccount($uTemp);

может быть, это тоже работает:

$uTemp = Doctrine_Core::getTable('Clients')->getClientsAccount($uTemp)->getFirst();

удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...