【问题标题】: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 属性

【讨论】:

    猜你喜欢
    • 2015-03-04
    • 2019-05-31
    • 2015-08-15
    • 2020-08-04
    • 2013-09-06
    • 2019-02-20
    • 1970-01-01
    • 2018-01-13
    • 2017-10-24
    相关资源
    最近更新 更多