Laravel 对同一列中具有相同值的行进行分组

Laravel 对同一列中具有相同值的行进行分组,laravel,eloquent,Laravel,Eloquent,我有一个很难实现的分组问题。我有一个主表,在name列中包含名称。还有一个表通过belongsTo关系连接到主表,并包含每个名称的计划 问题是,在主表中,一些名称重复了几次。结构如下图所示 | name | -------------------- | Mark | Mark | Jack | Alistair | Oliver | Jack 如果行具有相同的值(名称),我想对行进行分组。同时

我有一个很难实现的分组问题。我有一个主表,在
name
列中包含名称。还有一个表通过belongsTo关系连接到主表,并包含每个名称的计划

问题是,在主表中,一些名称重复了几次。结构如下图所示

|       name        | 
--------------------
|       Mark
|       Mark 
|       Jack
|       Alistair
|       Oliver
|       Jack
如果行具有相同的值(名称),我想对行进行分组。同时尽量避免丢失连接的表数据。因为每个名称在另一个表中都有自己的计划

Master::select('name')
        ->groupBy('name')
        ->get();
如果我像上面那样做,我就把名字分组。但这一次,我当然会丢失连接表的数据

我在这里想要的是什么

下面是表结构和表之间连接的模型

主表

    Schema::create('masters', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->timestamps();
    });
   Schema::create('plans', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->integer('master_id');
        $table->string('website');
        $table->string('url');
        $table->string('plan_name');
        $table->timestamps();
    }); 
计划表

    Schema::create('masters', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->timestamps();
    });
   Schema::create('plans', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->integer('master_id');
        $table->string('website');
        $table->string('url');
        $table->string('plan_name');
        $table->timestamps();
    }); 
主模型

public $with = ["plan];

public function plan()
{
    return $this->hasMany("App\Plan");
}
public function master()
{
    return $this->belongsTo("App\Master");
}
计划模型

public $with = ["plan];

public function plan()
{
    return $this->hasMany("App\Plan");
}
public function master()
{
    return $this->belongsTo("App\Master");
}

Group by不允许我们选择所有列,以便您可以加入并使用order by

DB::table('masters as m')->select(m.*,p.*)
->join('plans as p', 'p.master_id', '=','m.id')
->orderBy('m.name', 'asc')
->orderBy('p.id', 'asc')

您是否使用名称连接两个表?是否有主键?请提供完整的表结构。我更新了问题。并提供模型的表格结构@CHARITRASHRESTHA请查看。不能使用该名称连接两个表,因为它们没有唯一的值。解释为什么要对名称进行分组。两个马克是同一个人吗?如果是,则仅通过主键链接表。不需要使用group By是的,它们是。但在计划表中,每个标记持有不同的计划。我在这里要做的。将标记分组,并将计划分组@CHARITRASHRESTHAas您的问题是,如果每个名字都有不同的计划,为什么要合并。如果您想不惜任何代价实现这一点,您可以在主表中再增加一列,如name1 plan等。谢谢,但查询有问题。因为它只是返回名字。。。名字重复着同样数量的计划