Я создал полиморфные отношения, которые работают. Просто при попытке получить «родителя» (с 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);
работ.
Но при попытке получить отношение, оно показывается как ноль:
$results = SearchCache::query();
foreach ($search as $searchString) {
$results = $results->where('searchable', 'like', "%$searchString%");
}
$results = $results->with('searchCacheable')->get();
dd($results);