2017-02-17 42 views
1

Я думаю, что есть простое решение этой проблемы, но я не могу найти ее. Я возвращаю ошибку, говоря, что $ p_name равно NULL в запросе содержания комментариев. Как это возможно, так как это было четко указано раньше.CakePHP содержит условие не может использовать переменную?

$p_name = "Berta"; 

$query = $articles->find()->contain([ 
    'Comments' => function ($q) { 
     return $q 
      ->select(['name']) 
      ->where(['Comments.name' => $p_name]); 
    } 
]); 

ответ

2

переменная не доступна в области видимости функции д, вам необходимо пройти с использованием построения, как:

$p_name = "Berta"; 

$query = $articles->find()->contain([ 
    'Comments' => function ($q) use ($p_name) { 
     return $q 
      ->select(['name']) 
      ->where(['Comments.name' => $p_name]); 
    } 
]); 
+0

гениальная! Это ответ, отметьте через 2 минуты! – marius

+1

Обратите внимание, что это не CakePHP, это вещь PHP. См. Пример 3 в [анонимной документации по функциям] (http://php.net/manual/en/functions.anonymous.php). –