Я использую таблицы данных 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]