Laravel Backpackを使用して適切なバックオフィスを作成しています。Laravelバックパック - 複数のジョインテーブルでフィルタを適用した後にIDが変更されました
しかし、フィルタオプションには少し問題があります。 プライマリキーでリンクされているデータベースにserevalテーブルがあります。
それはこのような何かを行います。
:サイト - 私はこのような何かをTreeCrudCrontroller.phpで、私のコードでは>ツリー(parcel_idを持っている)
- >小包を(SITE_IDました)
が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%");
}
);
、私はこのコードを持っていますフィルタを使用せずに初めてテーブルを表示すると、サイトと所有者の両方が正しいテキストを表示しますが、そのうちの1つをフィルタリングすると、現在のツリーのIDが変化しています。
私はサイトによってフィルタリングするために使用する場合は、ツリーIDは、私は小包でフィルタするために使用する場合は、ツリーIDがIならば、私は知らないパーセルID
によって変更されたサイトのID によって変更されます何か間違っているか、バグかどうか
私はLaravel、バックパック/ベース、バックパック/クルードの最新バージョンです。
私はできるだけ理解しやすいんだことを願っています:)あなたの助け
編集用
ありがとう:私は私のPMAでのSQL要求をしようとすると、私はこのようなものを持っている: SQL result
私はLaravelが最初のID欄にもかかわらず最後のID列を保持していると思います。