Laravel 5:有没有办法在单个查询中列出多个模型中特定关系属性的所有值?

时间:2017-03-07 09:36:12

标签: php laravel laravel-5 eloquent

我有两种模式:

DropdownValue     

use Illuminate\Database\Eloquent\Model;

class DropdownValue extends Model
{
    protected $table = "dropdown_values";
    public $timestamps = false;

    protected $fillable = [
        "field_id",
        "value",
    ];

    public function childValues()
    {
        return $this->belongsToMany("\\App\\Models\\ChildValue", "value_child", "parent_value_id", "child_value_id");
    }
}

ChildValue 模型:     

class ChildValue extends Model
{
    protected $table = "children_values";
    public $timestamps = false;

    protected $fillable = [
        "value"
    ];

    public function parentValue()
    {
        return $this->belongsToMany("\\App\\Models\\DropdownValue", "value_child", "child_value_id", "parent_value_id");
    }
}

我想知道是否有办法使用childValues方法或使用替代方法同时从多个DropdownValue模型中获取所有lists()值但不使用任何如果可能的话,循环结构,只是一个单行解决方案。这样的事情:

$parent_values = DropdownValue::with("childValues")->get();
$child_values = $parent_values->lists("childValues.value")->all();

我会考虑任何解决方案,即使它不完全符合我的要求,所以请随时发表您的想法。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

作为我的情况的解决方案,我使用了这个实现:

$parent_values->map(function($item) {
        return $item->childValues->pluck("value", "id")->toArray();
    })->flatten();

比我想要的要复杂一点,但它现在有效。无论如何,我希望有人会觉得这很有用。

我也很高兴看到你的解决方案。 ;)