将数据添加到雄辩的集合中?

时间:2015-06-11 09:59:45

标签: laravel eloquent laravel-5

我从我的数据库中获取各种数据。

    Evaluator traversal:
(6)
(6)--[KNOWS,0]-->(1)
(6)--[KNOWS,0]-->(1)<--[KNOWS,2]--(4)
(6)<--[KNOWS,1]--(3)--[KNOWS,6]-->(0)
(6)--[KNOWS,0]-->(1)<--[KNOWS,2]--(4)<--[KNOWS,3]--(5)
(6)<--[KNOWS,1]--(3)--[KNOWS,6]-->(0)<--[KNOWS,7]--(7)

Nodes with 'inCommon' edges >= 15:
Joe
Sara
Peter
Lars
Dirk
Nici

我还必须执行复杂的原始查询以获取一些信息。这将作为数组返回。

在我的方法中,我希望获得用户的产品,然后将我的原始查询中的数据添加到此集合中,但此数据将作为数组返回。类似的东西:

Product::with('users');

如何将原始查询输出添加到我的产品系列?

1 个答案:

答案 0 :(得分:0)

通过像Product ::一样使用Eloquent Facade,您将得到一个Eloquent Model对象作为结果或一个Eloquent Collection对象,包括通过get方法检索的结果或通过关系访问的结果。

现在,如果我理解正确,您需要将一个extraData属性添加到Eloquent Collection模型以及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模型提供extraData,只需在您的Eloquent模型中创建一个新属性,将其公开并在需要时设置您的额外数据。使用上面的

  • 中的setExtraData()方法和$ extraData属性