【问题标题】:Adding data to an eloquent collection?将数据添加到雄辩的集合?
【发布时间】:2015-06-11 09:59:45
【问题描述】:
我正在从我的数据库中获取各种数据。
Product::with('users');
我还必须执行复杂的原始查询以获取一些信息。这是作为数组返回的。
在我的方法中,我想与用户一起获取产品,然后将原始查询中的数据添加到此集合中,但此数据以数组的形式返回。比如:
Product::with('users');
Product->extraData = $rawQuery;
如何将原始查询输出添加到我的产品集合中?
【问题讨论】:
标签:
laravel
eloquent
laravel-5
【解决方案1】:
通过使用像 Product:: 这样的 Eloquent Facade,您将获得一个 Eloquent Model 对象作为结果或一个 Eloquent Collection 对象作为结果,包括通过 get 方法检索或通过关系访问的结果。
现在,如果我理解正确,您需要在 Eloquent Collection 模型中添加一个 extraData 属性以及 Collection 项目吗?或者您需要为每个产品添加额外数据?
-
如果你需要为 Eloquent Collection 对象添加额外的属性,也许使用自定义集合是个好主意。请阅读本节:http://laravel.com/docs/5.1/eloquent-collections#custom-collections。
<?php namespace App;
use App\CollectionWithExtraData;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function newCollection(array $models = [])
{
return new CollectionWithExtraData($models);
}
}
也许你的 CollectionWithExtraData 可以让我们说一个
public function setExtraData() {
}
或
public $extraData = array();
如果您需要为每个产品 Eloquent 模型提供额外数据,只需在您的 Eloquent 模型中创建一个新属性,将其公开并在需要时设置您的额外数据。利用上面的 setExtraData() 方法和 $extraData 属性