Как отфильтровать морфийные отношения с помощью яджры? - PullRequest
1 голос
/ 19 июня 2019

Я использую таблицы данных yajra в своем проекте laravel, и я создал класс, расширяющий таблицу красноречивых данных, которая использовалась для фильтрации столбцов отношений в данных отношений. но я не могу отфильтровать данные по морфинным отношениям.

        $table = '';
        $deletedAt = false;
        $lastQuery = $this->query;
        foreach (explode('.', $relation) as $eachRelation) {
            $model = $lastQuery->getRelation($eachRelation);
            switch (true) {
                case $model instanceof BelongsToMany:
                    return  $relation . '.' . $relationColumn;
                    // belongs to many relationship does not work properly.
                    /*$pivot = $model->getTable();
                    $pivotPK = $model->getExistenceCompareKey();
                    $pivotFK = $model->getQualifiedParentKeyName();
                    $this->performJoin($pivot, $pivotPK, $pivotFK);

                    $related = $model->getRelated();
                    $table = $related->getTable();
                    // $tablePK = $related->getForeignKey() changed to $model->getRelatedPivotKeyName()
                    $tablePK = $model->getRelatedPivotKeyName();
                    $foreign = $pivot . '.' . $tablePK;
                    $other = $related->getQualifiedKeyName();

                    // removed conflict code when retrieving belongs to many relations data
                    $lastQuery->addSelect($table . '.' . $relationColumn . ' as ' . $table . '_'
                        . $relationColumn );
                    $this->performJoin($table, $foreign, $other);*/

                    //break;

                case $model instanceof HasOneOrMany:
                    $table = $model->getRelated()->getTable();
                    $foreign = $model->getQualifiedForeignKeyName();
                    $other = $model->getQualifiedParentKeyName();
                    $deletedAt = $this->checkSoftDeletesOnModel($model->getRelated());
                    break;

                case $model instanceof BelongsTo:
                    $table = $model->getRelated()->getTable();
                    $foreign = $model->getQualifiedForeignKeyName();
                    $other = $model->getQualifiedOwnerKeyName();
                    $deletedAt = $this->checkSoftDeletesOnModel($model->getRelated());
                    break;

                default:
                    throw new Exception('Relation ' . get_class($model) . ' is not yet supported.');
            }
            $this->performJoin($table, $foreign, $other, $deletedAt);
            $lastQuery = $model->getQuery();
        }

        return $table . '.' . $relationColumn;
    }

Я хочу получить данные с использованием морф-отношения, в моем случае предмет является предметом или веткой. поэтому я хотел бы добавить фильтр на имя элемента в моем ответе

 {
                "id": 27610,
               "items": [{
                            "item_id": 34245,
                            "expire_date": "2019-07-26 00:00:00",
                            "parent": null,
                            "item": {
                                "id": 3,
                                "name": "mechanical-engineering",
                                "short_description": "used subject - 21",
                                "long_description": "1",
                                "type": "live",
                                "slug": "test-data-1",
                                "is_active": 1,
                                "thumbnail_file": null,
                                "detail": {
                                    "id": 3,
                                    "start_date_time": "2019-08-23T06:29:35.000000Z",
                                    "end_date_time": "2019-08-23T06:29:35.000000Z",
                                    "actual_price": 182,
                                    "discounted_price": 110
                                }
                            },
                            "amount": 110,
                            "item_type": "live"
                        }
                    ],

            },

Я добавил структуру базы данных этой ссылки на изображение таблицы: -

[https://i.stack.imgur.com/PCGlf.png][1]

...