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->
save()
方法后是否总是读取新写入的数据?在我的示例中,$other_item1->foo
是否始终为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();