首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉勒维尔雄辩的前程环

问拉勒维尔雄辩的前程环
EN

Stack Overflow用户
提问于 2016-03-09 17:54:51
回答 2查看 4.9K关注 0票数 2

我有一个foreach循环,它遍历一个数组,并以雄辩的方式保存数据。当它是这样的时候,它工作得很好:

代码语言:javascript
复制
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'] : ''
    ]);

}

但是,当我添加if条件时,就会得到未定义的变量问题错误。

代码语言:javascript
复制
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.';
    }
}

如果有人能帮我做这件事,我会非常感激的,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-09 17:59:07

您没有将$question注入回调函数。您需要使用use关键字:

代码语言:javascript
复制
if(!$question = Question::where('id', $question['id'])->where(function($query) use ($question) { $query-  >where('updated_at','<', $question['updated']); })->first()) {

注意,我在use ($question)后添加了function($query)位

这允许在回调范围内访问$question。

票数 5
EN

Stack Overflow用户

发布于 2016-03-09 18:33:55

您试过使用firstOrNew()吗?Laravel文档->

“firstOrNew方法(如firstOrCreate )将尝试在数据库中找到与给定属性相匹配的记录。但是,如果找不到模型,将返回一个新的模型实例。请注意,firstOrNew返回的模型尚未持久化到数据库中。您需要手动调用保存以持久保存它。”

示例(使用$question值):

代码语言:javascript
复制
foreach($questions['questions'] as $question) {
 $questionObject = Question::firstOrNew(
                array(
          'external_id' => $question['id'],
          'text' => $question['question_text'],
          'type' => $question['question_type'],
          'image' =>$question['question_image'] 

                )
        );

$questionObject->external_id = $question['id'];
$questionObject->text = $question['text'];
.
.
.
$questionObject->save();

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35899028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档