gpt4 book ai didi

arrays - 如何从具有ID的数组中创建模型的集合-Laravel

转载 作者:行者123 更新时间:2023-12-03 11:20:51 24 4
gpt4 key购买 nike

我正在使用按钮attach (name)' for each model which is not connected to the base model with a includesToMany`关系创建一个foreach循环。

我有一个特定型号的ID数组

$attached_stages = $object->stages()->getRelatedIds()->toArray(); // output: 1, 2  

然后,我拥有同一模型的所有模型实例,
$all_stages = Stage::orderBy('id', 'asc')->pluck('id')->all(); // output: 1,2,3,4 ... 6

$missing_stages = array_diff($all_stages, $attached_stages); // output: 3,4,5,6

我的问题:如何从 $missing_stages数组中获取集合

数组已按预期创建

我的问题(替代解决方案)

我实际上想要得到的是没有通过 $object关系附加到主 stages()的模型的集合。

该关系定义如下:
public function stages()
{

return $this->belongsToMany('App\Models\Stage', 'lead_stage', 'lead_id', 'stage_id')->withPivot('id','status')->withTimestamps();
}

我无法通过以下代码获得所需的收藏:
    $all_stages = Stage::get(); //  output: collction 1,2,.... 6
$attached_stages = $object->stages(); // output: 1, 2
$missing_stages = $all_stages->diff($attached_stages); // expected output: 3,4,5,6

注意:我试图删除关系定义中的枢轴部分,但没有帮助, diff方法对我不起作用。集合没有任何内容。

任何帮助表示赞赏。谢谢。

最佳答案

您可以将 whereNotIn() 用于以下问题:

$attached_stages = $object->stages()->getRelatedIds()->toArray();

$missing_stages = Stage::whereNotIn('id', $attached_stages)->get();

关于arrays - 如何从具有ID的数组中创建模型的集合-Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41194529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com