доступный для поиска метод в BelongsTo filed доза не работает в laravel nova, не возвращая никаких элементов

У меня есть модель под названием Customer, у которой есть отношение HasMany к моделиNotes

public function notes()
{
    return $this->hasMany(Note::class);
}

и примечание имеет BelongsTo отношение к Клиенту

public function customer()
{
   return $this->belongsTo(Customer::class);
}

затем я определил те же отношения в ресурсе Note nova

BelongsTo::make('Customer', 'customer', Customer::class)

пока здесь все работает отлично, если хотите позвонить ->searchable() в поле BelongsTo ничего не возвращает из поиска

BelongsTo::make('Customer', 'customer', Customer::class)->searchable()

Как я могу решить эту проблему

3 ответа

Решение

Поле , которое вы вызываете srearchable(), должно быть в массиве поиска вашего ресурса.

поэтому, если ваше поле - BelogsTo, вы должны поместить поле заголовка ресурса, к которому вы принадлежите, в массив sreach

в моем случае поле заголовка

public static $title = 'name';

так что я положил это в

public static $search = [
    'id',
    'name',
];

и все работает как ожидалось

Ваше поле BelongsTo находится в другой таблице, поэтому, если вы хотите найти что-то в Note Resource with Customer, ваш поиск не будет работать. В данном случае для поиска я использую пакет SearchesRelations. Вы можете установить этот пакет и поместить этот код в свой класс ресурсов

  public static $searchRelations = [
    'customer' => ['name', 'another_customer_field'],
];

Пожалуйста, проверьте документацию для более подробной информации SearchesRelations.

В Laravel Nova 4 для этого можно использовать отношения:

Например, у вас есть заказы на поставку и поставщики , и вы хотите найти поставщика на ресурсе заказа на поставку:

Модель PurchaseOrder:

      public function supplier()
{
    return $this->belongsTo(Supplier::class, 'supplier_id', 'id');
}

Ресурс PurchaseOrder Nova:

      public static $search = [
    'supplier.name',
];

Подробнее об этом можно узнать в документации Laravel Nova: https://nova.laravel.com/docs/4.0/search/#searching-relationships .

Другие вопросы по тегам