【问题标题】:how to group similar names from database before "-"如何在“-”之前对数据库中的相似名称进行分组
【发布时间】:2018-07-14 20:54:33
【问题描述】:

嘿,我的数据库看起来像这样。请只关注第二列: db

现在我已经这样做了,看起来像: what i have done

所以现在你们都可以看到我做了一个视图,它显示、分隔和分组相同的值:

批准时间-何时, 批准违规, 取消人, 取消人-1, 取消人-2

但我现在要做的是将所有“批准”和所有“取消”组合在一起,而不是像我的第二张图片中所示将它们分开。我怎样才能做到这一点?我的代码如下:

路线:

Route::get('queries/{companyID}/{entityType}/{entityValue}','Chatbot\ChatbotController@queries');

控制器:

public function queries($companyID, $entityType, $entityValue)
{
  $data = [];

  $details = DiraQuestion::where('company_id', $companyID)->where('eType', $entityType)->where('eVal', $entityValue)->get();

  foreach ($details AS $datum) 
  { 
    if (!isset($data[$datum->intent])) $data[$datum->intent] = ['question' => [], 'answer' => []]; 
    $data[$datum->intent]['question'][$datum->queries] = $datum->id; 
  } 

  $detailsAns = DiraResponses::where('company_id', $companyID)->where('eType', $entityType)->where('eVal', $entityValue)->get();

  foreach ($detailsAns AS $datum) 
  { 
    if (!isset($data[$datum->intent])) $data[$datum->intent] = ['question' => [], 'answer' => []]; 
    $data[$datum->intent]['answer'][$datum->reply] = $datum->id; 
  }

  ksort($data);
  return view('AltHr.Chatbot.queries', compact('data','entityType','entityValue','companyID'));
}

查看:

@foreach($data as $intentName => $questionAnswer)
  <div class="form-group edit-response-container">
    <label data-toggle="collapse" data-target="#collapse-{{$intentName}}" aria-expanded="false" aria-controls="collapse-{{$intentName}}"> {{$intentName}} <i class="fa fa-chevron-down"></i></label>
    <div class="collapse" id="collapse-{{$intentName}}">

    </div>
  </div>
@endforeach

【问题讨论】:

    标签: php html database laravel


    【解决方案1】:

    我会使用groupBy 收集方法并像这样处理第二列:

    // change to your model and whatever the second column is named.
    $collection = Model::all();
    // or DiraQuestion/DiraResponse ..
    $collection = ... your query...
    // then
    $grouped = $collection->groupBy(function ($item, $key) {
        return explode('-', $item['column_2'])[0];
    });
    

    更新

    // result of DiraResponses query
    $grouped = $detailsAns->groupBy(function ($item, $key) {
        return explode('-', $item['column_2'])[0];
    });
    

    【讨论】:

    • 但我如何在上面的控制器中使用它?
    • approvalcancellation 的表是否适用于DiraResponse 模型?
    • DiraQuestion
    • 但是它们都是一样的,所以你可以使用任何一个
    • 在这种情况下,您只需使用这些查询的结果来代替$collection。我会更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多