Mar*_*rco 1 php foreach php-closures laravel
我有一个遍历数组的foreach循环,并以雄辩的方式保存数据.它是这样的:
foreach($questions['questions'] as $question) {
$questionObject = Question::create([
'external_id' => $question['id'],
'text' => $question['question_text'],
'type' => $question['question_type'],
'image' => (array_key_exists('question_image', $question)) ?
$question['question_image'] : ''
]);
}
Run Code Online (Sandbox Code Playgroud)
但是当我添加if条件时我得到未定义的变量问题错误.
foreach($questions['questions'] as $question) {
if(!$question = Question::where('id', $question['id'])->where(
function($query){
$query->where('updated_at','<', $question['updated']);
}})->first()) {
$questionObject = Question::create([
'external_id' => $question['id'],
'text' => $question['question_text'],
'type' => $question['question_type'],
'image' => (array_key_exists('question_image', $question)) ?
$question['question_image'] : ''
]);
} else {
return 'Question: '.$question['external_id'].' already exist.';
}
}
Run Code Online (Sandbox Code Playgroud)
如果有任何可以帮助我,非常感谢,提前谢谢!
你没有注入$question你的回调函数.您需要使用use关键字:
if(!$question = Question::where('id', $question['id'])->where(function($query) use ($question) { $query- >where('updated_at','<', $question['updated']); })->first()) {
Run Code Online (Sandbox Code Playgroud)
注意我之后加了use ($question)一下function($query)
这允许$question在回调范围内访问.
| 归档时间: |
|
| 查看次数: |
2561 次 |
| 最近记录: |