【问题标题】:Instantiate a eloquent Model that alrready exists in the database with attributes?用属性实例化一个已经存在于数据库中的雄辩模型?
【发布时间】:2016-11-19 12:55:39
【问题描述】:

目前我在数组中有属性,但该模型已经存在于表中,如何在不再次查询的情况下实例化模型,以便我可以使用这些函数。我知道有办法。请指出我正确的方向。以下是我目前拥有的模型的一些值的数组结构。

"url" => null
  "is_default" => 1
  "is_verified" => 2
  "verification_token" => null

【问题讨论】:

  • 只需创建一个实例如$model = new YourModel(['url' => '']);
  • 但这会创建一个新实例,这意味着当我们调用 save 时它会插入新行
  • 所以不要调用 save 然后问题就解决了。
  • 您的代码是否知道数据库中现有记录的“id”?
  • 数据存在我只需要模型实例

标签: php laravel orm eloquent laravel-5.2


【解决方案1】:

终于明白了 我们可以通过值来实例化模型

$model = new YourModel(['name' => 'foo', 'other_attribute'=>3], false);

我们可以传递第二个参数为 false,表示它存在于数据库中

【讨论】:

    【解决方案2】:

    我认为您正在寻找firstOrNewfirstOrCreate 方法。 (Laravel 5.2 reference)

    这两种方法都将尝试使用给定的列/值对来定位数据库记录。但是firstOrNew不会将数据插入数据库,需要手动调用save()方法。

    firstOrNew 方法,如 firstOrCreate 将尝试在数据库中查找与给定属性匹配的记录。但是,如果没有找到模型,则会返回一个新的模型实例。请注意,firstOrNew 返回的模型尚未持久化到数据库中。您需要手动调用 save 来保存它:

    【讨论】:

    • 但我不想查询只是实例化模型
    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 2015-03-18
    • 2016-07-27
    • 2020-10-15
    相关资源
    最近更新 更多