Я уже 1 день пытаюсь заставить поиск по столбцу Laravel работать по данным взаимосвязи.
У меня есть две таблицы «клиенты» и «адреса», модель «Клиент» и модель «Адрес» итакже отношения.
Тестирование отношений:
https://i.imgur.com/z8SR004.png
Отношения модели адреса:
public function customer(){
return $this->belongsTo('App\Customer');
}
Отношения модели клиента:
public function address()
{
return $this->hasOne('App\Address');
}
Контроллер данных:
return DataTables::of($customers)
->addColumn('address', function (Customer $customer) {
return $customer->address->name;
})
->make(true);
Схема адреса:
Schema::create('addresses', function (Blueprint $table) {
$table->increments('id');
$table->integer('customer_id')->unsigned()->index();
$table->string('name');
$table->string('city');
$table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade');
$table->timestamps();
});
Схема клиента:
Schema::create('customers', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('alias');
$table->decimal('multiplier',8,2);
$table->string('email');
$table->timestamps();
});
JS:
columns: [
{ data: 'id', name: 'id' },
{ data: 'name', name: 'name'},
{ data: 'address', name: 'address.name'},
{ data: 'multiplier', name: 'multiplier' },
{ data: 'created_at', name: 'created_at' }
],
Все выглядит хорошо для меня, и я действительно не могу найти проблему, когда дело доходит до фильтрации по столбцам данных отношений.
Я получаю ошибку:
Call to undefined method
Illuminate\Database\Eloquent\Relations\HasOne::getForeignKey()
Чтобы исправить это, добавьте ->get()
к контроллеру, но это остановит пагинацию Datatable в вызове AJAX и сделает все медленнее, когда он запрашивает и выводит всю таблицу.
Прямые результаты:
http://ec2 -35-178-196-9.eu-west-2.compute.amazonaws.com (шВведите что-нибудь в нижней части столбца «Город» и нажмите клавишу «Ввод» -> проверьте вкладку «Сеть» и откройте ссылку «Ошибка AJAX 500») или просто переключайте страницы.
Как настроить поиск по столбцу Laravel для данных отношений?