Laravel Jensenggers Eloquent Model сортирует основную модель с помощью реляционной модели

Я пытаюсь отсортировать весь набор данных основной модели через столбец реляционной модели. я использую Laravel ORM 5.2.43 а также Jensenggers MongoDb 3.1

Вот модели у меня есть

UserEventActivity.php — Монго Модель

use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class UserEventActivity extends Eloquent
{

protected $collection = 'user_event_activity';
protected $connection = 'mongodb';

public function handset() {

return $this->hasOne('HandsetDetails', '_id', 'handset_id');
}

public function storeDetail() {

return $this->hasOne('StoreDetails', 'st_id', 'store_id');
}

}

HandsetDetails.php — Монго Модель

use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class HandsetDetails extends Eloquent
{

var $collection = 'user_handset_details';
var $connection = 'mongodb';

}

StoreDetails.php — MySql Model

use Jenssegers\Mongodb\Eloquent\HybridRelations;
use Illuminate\Database\Eloquent\Model as Eloquent;

class StoreDetails extends Eloquent
{

use HybridRelations;

protected $connection = 'mysql';
protected $table = 'icn_store';

}

Скрипт php

$activity = UserEventActivity::join('handset ', 'handset._id', '=', 'handset_id')
->join('storeDetail', 'store_id', '=', 'storeDetail.st_id')
->orderBy('handset.handset_make', 'desc')
->select('storeDetail.*', 'handset.*')
->get()
->toArray();

Эти данные из UserEventActivity не хранится на основе handset_make поле в отношении телефона.

Пожалуйста, помогите мне достичь ожидаемого результата

4

Решение

Насколько я знаю, MongoDB не поддерживает такие соединения.

Обойти это можно было бы с помощью энергичной загрузки.

Так что ваши UserEventActivity Модель может выглядеть так:

use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class UserEventActivity extends Eloquent
{

protected $collection = 'user_event_activity';
protected $connection = 'mongodb';

public function handset() {

return $this->hasOne('HandsetDetails', '_id', 'handset_id');
}

public function storeDetail() {

return $this->hasOne('StoreDetails', 'st_id', 'store_id');
}

public function getHandsetMakeAttribute()
{
return $this->handset->handset_make;
}}

Обратите внимание getHandsetMakeAttribute() сбруя.
Тогда вы сможете сделать свой звонок с этим:

$activity = UserEventActivity::with('storeDetail')
->with('handset')
->get()
->sortByDesc('handset_make')
->toArray();

Совсем не проверено, но стоит попробовать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]