Функция morphTo возвращает ноль, хотя связь существует - PullRequest
0 голосов
/ 03 октября 2019

Я создал полиморфные отношения, которые работают. Просто при попытке получить «родителя» (с with) результат равен null.

. Предположим, что есть некоторые таблицы / модели, которые требуют специального отношения для кэширования.

Миграция

class CreateSearchCachesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('search_caches', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->text('searchable');
            $table->string('url');
            $table->morphs('searchCacheable');
            $table->timestamps();
        });
    }
}

Модель

class SearchCache extends Model
{
    protected $fillable = [
        'searchable',
        'url'
    ];

    public function searchCacheable()
    {
        return $this->morphTo();
    }
}

Сохранение с использованием $model->searchCache()->save($searchCache); работ.

enter image description here

Но при попытке получить отношение, оно показывается как ноль:

$results = SearchCache::query();

        foreach ($search as $searchString) {
            $results = $results->where('searchable', 'like', "%$searchString%");
        }

        $results = $results->with('searchCacheable')->get();

        dd($results);

enter image description here

1 Ответ

0 голосов
/ 03 октября 2019

Проблема, похоже, заключается в использовании CamelCase в названии. Поэтому, пожалуйста, будьте предупреждены, чтобы проверить, что сначала.

Переименование с searchCacheable на searchcacheable исправило это.

...