Группа Laravel По одному типу столбца, а также по порядку Только по этому типу - PullRequest
0 голосов
/ 04 декабря 2018

Это моя таблица foo:

----------------------------
id | name | type | parent_id
----------------------------
 1    a   |  foo |   null
 2    b   |  bar |    1
 3    c   |  baz |    1
 4    d   |  foo |    1
 5    e   |  baz |    1
 6    f   |  bar |    1
 7    f   |  baz |    1

, и это модель, связанная с этой таблицей:

class Foo extends Model {

    public function childs()
    {
        return $this->hasMany(Foo ::class, 'parent_id');
    }

    public function parent()
    {
        return $this->belongsTo(Foo ::class, 'parent_id');
    }

}

в моем контроллере:

$foo = Foo::find(1);

и мой вопрос, как я могу получить все дочерние элементы модели $foo, упорядоченные и сгруппированные только по части базы столбца типа.что-то вроде этой таблицы:


id | name | type | parent_id
----------------------------
 5    e   |  baz |    1
 7    f   |  baz |    1
 3    c   |  baz |    1
 1    a   |  foo |   null
 2    b   |  bar |    1
 4    d   |  foo |    1
 6    f   |  bar |    1

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Вы можете попробовать что-то подобное:

orderByRaw("FIELD(name, 'Baz') ASC");
0 голосов
/ 04 декабря 2018

groupBy / имеющий

GroupBy и имеющие методы могут использоваться для группировки результатов запроса.Сигнатура метода, имеющего метод, похожа на сигнатуру метода where:

$users = DB::table('users')
                ->groupBy('account_id')
                ->having('account_id', '>', 100)
                ->get();

Вы можете передать несколько аргументов методу groupBy для группировки по нескольким столбцам:

$users = DB::table('users')
                ->groupBy('first_name', 'status')
                ->having('account_id', '>', 100)
                ->get();

Подробнее читайте официальная документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...