Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel:调用ORM的save()方法后,是否总是读取新写入的数据?_Php_Mysql_Laravel - Fatal编程技术网

Php Laravel:调用ORM的save()方法后,是否总是读取新写入的数据?

Php Laravel:调用ORM的save()方法后,是否总是读取新写入的数据?,php,mysql,laravel,Php,Mysql,Laravel,代码: 我的问题: 调用ORM的save()方法后是否总是读取新写入的数据?在我的示例中,$other_item1->foo是否始终为1 如果问题1的答案不是,我如何确保从数据库中读取新写入的数据 我想您可能对find()函数感到困惑find()用于通过其主键获取一个或多个模型。如果未找到记录,则返回值将是单个模型、集合或null 如果要查找多行,则需要运行Item::get() 使用 $item1 = Item::find(1); $item1->foo = 1; $item1->

代码:

我的问题:

  • 调用ORM的
    save()
    方法后是否总是读取新写入的数据?在我的示例中,
    $other_item1->foo
    是否始终为1
  • 如果问题1的答案不是,我如何确保从数据库中读取新写入的数据

  • 我想您可能对
    find()
    函数感到困惑
    find()
    用于通过其主键获取一个或多个模型。如果未找到记录,则返回值将是单个模型、集合或
    null

    如果要查找多行,则需要运行
    Item::get()

    使用

    $item1 = Item::find(1);
    $item1->foo = 1;
    $item1->save();
    $another_item1 = Item::find(1);
    dd($another_item1->foo);//Is this value always 1?
    

    调用ORM的save()方法后是否总是读取新写入的数据

    否,在这种情况下,在
    INSERT
    UPDATE
    语句之后没有运行
    SELECT

    在我的例子中,
    $other_item1->foo
    总是
    1

    根据你自己的评论,是的

    如果问题1的答案不是,我如何确保从数据库中读取新写入的数据


    您的问题很难理解,但Laravel ORM按操作顺序工作,意思是:如果保存Item::find(1);然后在下一行再次重复,您将获得以前提交的最新数据。save()函数只需向db写入一条update sql语句。1)运行代码,问题会自动回答:)@lagbox是的,我已经运行了大约10000次代码,它们都输出1。但这个结果并不意味着在任何情况下都是1。@Sayakiss“他们都输出1”-你说的“他们”是什么意思?当您运行
    $item1->foo=1时然后
    $item1->save()
    然后立即转身运行
    $other_item1=Item::find(1)在同一行上。。它将始终返回
    1
    ,因为您刚刚告诉它将记录数据更新为
    1
    。你在看同一行。@Sayakiss你刚才自己回答了所有的问题,这就是问题的重点。。“在我的例子中,
    $other_item1->foo
    总是1吗?”在你的例子中,是的,你说是的。。你刚刚回答了自己的问题,你的帖子里没有什么要回答的了
    $Item = Item::find(1); // returns model or null
    $Items = Item::find(array(1, 2, 3)); // returns selected Items in collection
    $Items = Item::get(); // Returns all in collection
    
    $model->save();
    // Reload the current model instance with fresh attributes from the database.
    $model->refresh();
    // OR
    // Reload a fresh model instance from the database.
    $fresh = $model->fresh();