如何检查Laravel中的记录是否是新的?

Cra*_*ard 38 laravel eloquent

我最近开始使用Eloquent.

当我使用PHP Active Record时,有一个很好的函数可以检查记录是从数据库加载还是新实例.在Eloquent中我可以使用类似的东西吗?

新的我的意思是:

$article = new Article;
Run Code Online (Sandbox Code Playgroud)

而数据库中的一个就是

$article = Article::find(1);
Run Code Online (Sandbox Code Playgroud)

Hai*_*ood 96

所有laravel型号都有一个->exists属性.

更具体地说,如果模型是从数据库加载的,或者自创建以来已保存到数据库,则exists属性将为true; 否则它将是假的.

如果您想知道模型是否自从数据库中获取后已被修改,或者根本没有保存(也就是说它需要保存),那么您可以使用该->isDirty()功能.

Laravel API是提供此类信息的有用位置:http://laravel.com/api/4.2/Illuminate/Database/Eloquent/Model.html#method_isDirty 并且通常比默认文档更加轻松.

  • 不幸的是,Laravel的文档几乎没有涉及框架的表面. (39认同)
  • 不要混淆方法`$ model-> exists()`做其他事情,比如计算数据库中的行,如果count> 0则返回:) (15认同)

Did*_*olo 33

您的模型对象具有为此精确设计的属性.它是最近处理的:

$item = Item::firstOrCreate(['title' => 'Example Item']);

if ($item->wasRecentlyCreated === true) {
    // item wasn't found and have been created in the database
} else {
    // item was found and returned from the database
}
Run Code Online (Sandbox Code Playgroud)

  • wasRecentlyCreated指示是否在当前请求生命周期中插入了模型。因此,即使数据库中缺少该记录,它在保存后也只会返回“ true”。 (3认同)