【问题标题】:Convert an array to eloquent model in Laravel在 Laravel 中将数组转换为 eloquent 模型
【发布时间】:2016-05-23 15:13:54
【问题描述】:

我有一个三列的mysql表'test',

1.sno    2.name    4.country

这段代码很容易理解

$person = \App\Test::find(1);
$person->country;         //Defined in Test eloquent model

现在我想做这样的事情:

$p = ['sno' => 1, 'name' => 'Joe', 'country' => '1' ];
$p->country;      //Return relevent column form countries table as defined in Model

要记住的是,我尝试映射的用户已经存在于数据库表中。如何将数组转换为 eloquent 模型?

【问题讨论】:

  • 您可以使用模型的fill() 方法将该数组转换为填充模型
  • 我不是想填充,我想映射...
  • 你能给我举个例子吗
  • 感谢您的帮助,但文档中说“您也可以使用 create 方法将新模型保存在一行中。插入的模型实例将从该方法返回给您。”但我不想创建...只是地图。你的帮助将被应用

标签: php mysql laravel collections eloquent


【解决方案1】:

你可以实例化没有属性的模型类:

$dummy = new \App\Test;

然后就可以调用newInstance()方法了:

$attributes = ['sno' => 1, 'name' => 'Joe', 'country' => '1' ];
$desiredResult = $dummy->newInstance($attributes, true);

方法中的true 标志告诉 eloquent 该实例已经存在于数据库中,因此您可以继续正常使用它。现在你可以这样做了:

$desiredResult->country //'1'

【讨论】:

  • 如果我有一个包含多个 $attributes 的数组(数组数组)怎么办。我将如何在没有迭代的情况下实例化它们,所以我可以这样做 $desiredResult->firstI()->country;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多