1 Отредактировано templton (2016-08-31 22:26:49)

Тема: Как получить доступ к protected свойствам из репозитория в контроллере

Вот так запрашиваю данные:

$user_avalable_stocks=$em->getRepository('StockerStockBundle:Userstock')->getUserAvailableStocks($request->get('userid'));

В twig их перебираю так:

{% for stock in user_avalable_stocks %}
    <option val="{{stock.id}}">{{stock.stockname}}</option>
{% endfor %}

А как сделать такой перебор в контроллере?
Если делаю так:

foreach ($user_avalable_stocks as $stock){
            echo $stock->stockname;
        }

то получаю ошибку:
Error: Cannot access protected property Stocker\StockBundle\Entity\Userstock::$stockname

Если так:

echo $stock->stockname();

то получаю ошибку:
Notice: Trying to get property of non-object

2

Re: Как получить доступ к protected свойствам из репозитория в контроллере

тогда у вас класс Userstock должен предоставлять метод для доступа к этому свойству

3

Re: Как получить доступ к protected свойствам из репозитория в контроллере

$stock->getProperty();

4 Отредактировано templton (2016-09-01 19:04:37)

Re: Как получить доступ к protected свойствам из репозитория в контроллере

Hill пишет:

$stock->getProperty();

Эх, спасибо тебе, добрый человек!:)
Но ведь делал я так:

$sad=$em->getRepository('StockerStockBundle:Userstock')->getUserAvailableStocks($request->get('userid'));
        
        foreach ($sad as $stock){
            echo $stock->getStockname().'<br>';
        }

И нифига не работало. Сегодня, глядя на ваше сообщение, сделал снова и все заработало!!! Видать, что-то не так я все-таки делал...

Буду использовать именно этот, правильный, метод, хотя я и придумал костыль: в репозитории ответ отсылать вот так:

return $qb->getQuery()->getResult(Query::HYDRATE_ARRAY);

Ну, и добавить
use Doctrine\ORM\Query;

Но это костыль. Правильно будет делать так, как вы написали.

5

Re: Как получить доступ к protected свойствам из репозитория в контроллере

мне сложно сказать как вы делали, но глядя на ваши два сообщения в этом топике могу только обратить внимание, что

$stock->stockname

не равно

$stock->getStockname()