【问题标题】:How to pass an array to ::with() - Lumen/Laravel如何将数组传递给 ::with() - Lumen/Laravel
【发布时间】:2020-02-03 16:14:27
【问题描述】:

所以$permittedTables 是我想加入coretable 的表名数组。 为此,我想使用 Model::with(),如下所示:

$join = coretable::with($permittedTables)->get();

但是,执行上述代码时出现此错误:

Argument 1 passed to Illuminate\Database\Eloquent\Builder::parseWithRelations() must be of the type array, object given, called in E:\aether-backend\vendor\illuminate\database\Eloquent\Builder.php on line 1043

最让我困惑的是这个实际是一个数组,所以我真的不明白为什么它实际上会抛出这个错误 xD

不过,谁能告诉我这种方法是否真的可行?如果是这样,我该怎么做?

编辑: 数组是这样生成的:

$permittedTables = extensiontables_registry::findmany($ids)->pluck('extensiontable_name');

以防万一这与它有关。

【问题讨论】:

    标签: php laravel eloquent orm


    【解决方案1】:

    pluck函数返回Collection/Enumerable,你必须调用toArray函数来获取表名数组

    $permittedTables = extensiontables_registry::findmany($ids)
                                 ->pluck('extensiontable_name')
                                 ->toArray();
    
    

    【讨论】:

      【解决方案2】:

      $permittedTables = extensiontables_registry::findmany($ids)->pluck('extensiontable_name'); 在上面的代码片段->pluck()方法返回Object,这就是为什么它会抛出以下错误must be of the type array, object given

      尝试使用这个:$permittedTables = extensiontables_registry::findmany($ids)->pluck('extensiontable_name')->toArray() 它应该可以工作。

      【讨论】:

      • 很高兴为您提供帮助。如果没有问题,请接受我的回答
      • 我会的,但是 stackoverflow 让我们再等 10 分钟 :D 在此之前系统不会让我接受任何答案 ^^
      猜你喜欢
      • 2021-01-17
      • 2020-07-27
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2021-11-20
      • 2015-01-23
      • 2017-12-25
      相关资源
      最近更新 更多