Laravel Backpack을 사용하여 적절한 백 오피스를 만들고 있습니다.Laravel Backpack - 여러 조인 테이블이있는 필터를 적용한 후 ID가 변경됨
하지만 필터 옵션에는 약간의 문제가 있습니다. 데이터베이스에 기본 키로 연결된 sereval 테이블이 있습니다.
이 이런 일을 수행합니다
사이트 -> 소포가 (SITE_ID했습니다) -> 트리 (가 parcel_id) 나는 이런 식으로 뭔가 할 TreeCrudCrontroller.php 내 코드에서
:
을 이public function parcel()
{
return $this->belongsTo(Parcel::class);
}
public function displaySite()
{
$site = Tree::with('parcel.site')->find($this->id);
return $site->parcel->site->name;
}
public function displayOwner()
{
$owner = Tree::with('parcel.site.owner')->find($this->id);
return $owner->parcel->site->owner->full_name;
}
문제는 내 트리 모델에서
$this->crud->addFilter([
'type' => 'text',
'name' => 'site',
'label' => 'Site'
],
false,
function ($value) {
$this->crud->addClause('join', 'parcels', 'parcel_id', 'parcels.id');
$this->crud->addClause('join', 'sites', 'parcels.site_id', 'sites.id');
$this->crud->addClause('where', 'sites.name', 'LIKE', "%$value%");
}
);`
$this->crud->addFilter([
'type' => 'text',
'name' => 'owner',
'label' => 'Propriétaire'
],
false,
function ($value) {
$this->crud->addClause('join', 'parcels', 'parcel_id', 'parcels.id');
$this->crud->addClause('join', 'sites', 'parcels.site_id', 'sites.id');
$this->crud->addClause('join', 'owners', 'sites.owner_id', 'owners.id');
$this->crud->addClause('where', 'owners.first_name', 'LIKE', "%$value%");
}
);
,이 코드가 필터없이 처음으로 테이블을 표시하면 사이트와 소유자가 모두 오른쪽 텍스트를 표시하지만 둘 중 하나를 필터링하면 현재 트리의 ID가 변경됩니다. 내가 사이트를 기준으로 필터링하는 데 사용하는 경우, 트리 ID가 사이트 ID 내가 소포를 기준으로 필터링하는 데 사용하는 경우에 의해 변경
는, 트리 ID는
내가 모르는 소포 ID에 의해 변경되는 경우 I 뭔가 잘못되었거나 버그 일 경우.
나는 Laravel, 배낭 /베이스 및 배낭/crud의 최신 버전입니다.
는 내가 수 : 당신의 도움이
편집에 대한
감사로 이해 해요 희망 : 내 PMA에서 SQL 요청을하려고 할 때, 나는 이런 식으로 뭔가가 : SQL result
을Laravel이 최초 ID 열에도 불구하고 마지막 ID 열을 유지한다고 생각합니다.