#php #doctrine-orm #mariadb
#php #doctrine-orm #mariadb
Вопрос:
Это мой первый простой запрос «findall». Цель состоит в том, чтобы случайным образом выбрать 1 запись, а затем повторить значение «ссылка» (поле в таблице BibleAnagrams). Я использую PHP array_rand для случайного выбора. Мне нужна помощь в том, как получить доступ к значению ‘reference’ из результирующего массива arrany_rand().
$Bible_anagram_reference = NULL;
/**
* @var AMDatabaseEntityTheVerseBibleAnagrams $result
*/
$result = $this->getDoctrineEntityManager()
->getRepository(get_class($this->getEntityBibleAnagrams()))
->findAll();
if (is_array($result) amp;amp; count($result) > 0) {
/**
* @var AMDatabaseEntityTheVerseBibleAnagrams $value
*/
$value = array_rand($result, 1);
echo "Bible Ananagram: " . $result[$value]['reference'] . "rn";
exit;
}
Случайно выбранная запись дает результат:
$result = Array
(
[0] => AMDatabaseEntityTheVerseBibleAnagrams Object
(
[reference:AMDatabaseEntityTheVerseBibleAnagrams:private] => 1
[languageIso:AMDatabaseEntityTheVerseBibleAnagrams:private] => en
[bibleAnagramWord:AMDatabaseEntityTheVerseBibleAnagrams:private] => Love
[word1:AMDatabaseEntityTheVerseBibleAnagrams:private] => Like
[word2:AMDatabaseEntityTheVerseBibleAnagrams:private] => Openness
[word3:AMDatabaseEntityTheVerseBibleAnagrams:private] => Venerate
[word4:AMDatabaseEntityTheVerseBibleAnagrams:private] => Enjoyment
)
);
Когда я использую
echo "Bible Ananagram: " . $result[$value]['reference'] . "rn";
Я получаю сообщение об ошибке
PHP Fatal error: Cannot use object of type AMDatabaseEntityTheVerseBibleAnagrams as array
Когда я использую
echo "Bible Ananagram: " . $result[$value]->reference . "rn";
Я получаю сообщение об ошибке
PHP Fatal error: Cannot access private property
Если вам нужно больше деталей, чтобы помочь мне, пожалуйста, посоветуйте, что это такое. Большое спасибо, Рон
Ответ №1:
Результаты, возвращаемые findAll()
функцией, представляют собой массив объектов Doctrine. Для доступа к значениям в результатах вам необходимо использовать методы получения. Перебирайте результаты и выводите значения следующим образом:
$results = $this->getDoctrineEntityManager()
->getRepository(get_class($this->getEntityBibleAnagrams()))
->findAll();
foreach ($results as $result) {
echo $result->getLike()."<br />";
echo $result->getOpenness()."<br />";
echo $result->getVenerate()."<br />";
echo $result->getEnjoyment()."<br />";
}
Чтобы это сработало, убедитесь, что у вас есть getLike()
, getOpenness()
, getVenerate()
, getEnjoyment()
или любые другие методы, определенные в вашей сущности, которые возвращают требуемые параметры. Пример определения getOpenness()
функции:
public function getOpenness()
{
return $this->Openness;
}