Как использовать `GroupBy` и` join` в SQL-запросе Laravel - PullRequest
0 голосов
/ 11 октября 2018

У меня есть две таблицы clinic и service.В таблице service есть столбец clinic_id.Теперь я хочу получить все службы в каждом столбце.

Я даю некоторые демонстрационные данные для лучшего понимания.

данные таблицы клиники

{id:1,name:clinic1},{id:2,name: clinic2}

данные таблицы услуг

{id: 1, clinic_id: 1, name: service11}, 
{id: 2, clinic_id: 1, name: service12}, 
{id: 3, clinic_id: 2, name: service21}, 
{id: 4, clinic_id: 2, name: service22}

Теперь я хочу получить данные, как показано ниже

{clinic_name: clinic1}:[{service_name: service11}, {service_name: service12}],
{clinic_name: clinic2}:[{service_name: service21}, {service_name: service22}]

Что такое запрос SQL для Laravel?

1 Ответ

0 голосов
/ 11 октября 2018

В соответствии с описанием, как упомянуто в вопросе, для выполнения вышеуказанной задачи могут использоваться красноречивые отношения

Согласно документации Laravel

Используется отношение "один ко многим"определить отношения, когда одной модели принадлежит любое количество других моделей.Например, сообщение в блоге может иметь бесконечное количество комментариев.Как и все другие отношения Eloquent, отношения «один ко многим» определяются путем помещения функции в модель Eloquent

. Попробуйте следующий фрагмент кода

app \ Models \ Clinic.php

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Clinic extends Model
{
    /**
     * Get the comments for the blog post.
     */
    public function services()
    {
        return $this->hasMany('\App\Models\Service','clinic_id','id');
    }
}
?>

app \ Http \ Controllers \ ClinicController.php

<?php namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Clinic;
use App\Http\Controllers\Controller;
use App\Http\Requests;

class ClinicController extends Controller
{
/**
 * Create a new controller instance.
 *
 * @return void
 */
public function __construct()
{

}

 function index()
 {
   $Clinics = Clinic::with('services')->get();
 }
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...