2017-02-17 39 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

變量不可用函數Q的範圍內,你需要使用USE通過構建這樣的:

$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的東西。請參見[匿名函數文檔](http://php.net/manual/en/functions.anonymous.php)中的示例3。 –