【问题标题】:Merge two eloquent collections into one object property?将两个雄辩的集合合并到一个对象属性中?
【发布时间】:2015-11-01 17:47:18
【问题描述】:

我们可以使用 stdClass 在 php 中创建空对象,我们可以像这样向它添加属性:

$data = new stdClass;

$data->xyz = something;

但是我们怎样才能给一个属性添加更多的东西呢?我的意思是这样的:

$data->xyz += somethingElse;

这可能吗?

我想做的是:我必须从数据库中获取一些数据,并且我想将两个表的记录存储在一个属性中。要从表中获取数据并将其存储在属性中,我这样做:

    $data = new stdClass;

    $data->gallery = \DB::table('RestaurantMenuOptions')
        ->select('Name', 'Image')
        ->get();

    $data->gallery2 = \DB::table('Promotions')
        ->select('Name', 'Image')
        ->get();

我想要将它们全部存储在一个 gallery 属性中。顺便说一句,我使用 Laravel 5。

编辑 1

我想要的是将 'RestaurantMenuOptions''Promotions' 表调用的数据合并到 $data 的一个属性中。我猜是否可以连接两个变量,或者是否可以使用 Eloquent 从两个不相关的表中获取数据?

到目前为止我的想法是 convert the models to array 然后加入它们,但是我如何将加入的数组转换为模型以便它在视图中?

编辑 2

我发现可以合并 eloquent 集合,但是如果表具有相同类型的 PK 并且存在具有相同 PK 的重复记录,它们将被覆盖,所以我决定将集合转换为数组合并它们并像这样访问他们:

{{ $item['key'] }}

如果有人有更好的方法,我会很感激。

【问题讨论】:

    标签: php laravel-5 stdclass object-properties


    【解决方案1】:

    我认为更好的方法是执行 for 循环,以使其更具动态性。

    代码:

    class Data {
        private $property, $property2;
    
        public function  __construct($property,$property2) {
            $this->Property = $property;
            $this->Property2 = $property2;
        }
    }
    
    $dataArray = array();
    
    $dataArray[] = new Data('Name',Image);
    $dataArray[] = new Data('Name',Image);
    
    print "<pre>";
    print_r($dataArray);
    print "</pre>";
    
    for ($i=0; $i < count($dataArray); $i++) { 
        // do something with the array of objects
    }
    

    【讨论】:

    • 这应该是一个评论......如果你能做一个例子,那么这将是一个答案
    • 用一些代码更新了它,这样你就可以明白我的意思了。如果您认为答案有帮助,请删除不赞成票
    • 嗯,我明白你的意思,但你的回答对我来说意味着很多代码,也许可以将两个变量合并为一个,然后将它们分配给一个属性,那会更好...
    • 我不太确定我是否在关注你。这是制作对象数组供以后使用的正确方法。我不知道我是否会以其他方式执行此操作,它可以让您在将对象添加到数组时很好地控制它们。但是如果你想加入两个变量并将它们分配给一个属性,你可以简单地做:$data-&gt;xyz = $data-&gt;xyz + somethingElse; 但我不知道你到底在追求什么,所以我可能误解了你的目标。
    • 我已经尝试过了,但是它给出了一个错误,Laravel 将其视为一个 Collection,并且错误说它不能将 Collection 转换为 int
    猜你喜欢
    • 1970-01-01
    • 2019-10-01
    • 2013-09-08
    • 2018-11-04
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多