【问题标题】:Laravel Nova Metrics Partition belongsToMany relationshipLaravel Nova Metrics Partition belongsToMany 关系
【发布时间】:2019-02-16 21:45:29
【问题描述】:

我有以下数据模型:

(出版物)(订阅者)

我想创建一个 Nova 分区度量来显示每个发布的订阅者数量。

我的 Partition 类的计算方法如下:

public function calculate(Request $request) { return $this->count($request, Subscriber::with('publications'), 'publication.id'); }

但我收到“未知列”错误。有谁知道如何进行这项工作?

【问题讨论】:

  • Nova 不是必须购买的系统吗?如果是这样,它不附带支持吗?
  • 第三个参数应该是publications.id

标签: laravel metrics laravel-nova


【解决方案1】:

你可以这样做:

public function calculate(Request $request)
{
    $subscribers = Subscriber::withCount('publications')->get();

    return $this->result(
        $subscribers->flatMap(function ($subscriber) {
            return [
                $subscriber->name => $subscriber->publications_count
            ];
        })->toArray()
    );
}

【讨论】:

    【解决方案2】:

    count 助手只允许按模型表上的列进行分组。它也不允许加入表格。

    如果您想要一个更复杂的查询,在另一个表中使用连接和按列分组,您可以构建自己的结果数组并使用结果助手返回它。

    您可以在此处查看结果助手文档:https://nova.laravel.com/docs/1.0/metrics/defining-metrics.html#customizing-partition-colors

    您应该在计算函数中创建您的数组(您可以在此处使用 eloquent 或查询构建器),然后使用结果助手返回该数组。

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      您可以在订阅者表中的publication_foreign_key 上创建groupBy,并使用->label() 方法将publication_foreign_key 编辑为publication_name

      像这样

             public function calculate(Request $request)
          {
             return $this->count($request, Subscriber::class, 'publication_id')
                ->label(function($publicationId) 
                  {
                  switch($publicationId)
                   {
                   case publication_foreign_key_1 : return publication_name_1;
                                        break;
                   case publication_foreign_key_2 : return publication_name_2;
                                        break;
                   default: return 'Others';
                   }                 
                 });
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-12
        • 2015-02-22
        • 2018-05-19
        • 1970-01-01
        • 1970-01-01
        • 2018-03-08
        • 2021-03-22
        • 2021-10-17
        相关资源
        最近更新 更多