В принципе я уже полиморфный таблица, которая выглядит следующим образом:Фильтр полиморфного Таблица
Polytable
--------
id
type
polyable_type
polyable_id
И полиморфный класс woly Eloquent
выглядит следующим образом:
class poly extends Eloquent {
.... //eloquent attributes and stuff
public function polyable()
{
return $this->morphTo();
}
}
И стандартный класс woly Eloquent
является следующим образом:
class woly extends Eloquent{
... //skipped most eloquent stuff
public function poly()
{
return $this->morphMany('poly','polyable');
}
public function polyTypeOne()
{
return $this->poly()->where('type','=','1')->get();
}
}
Теперь, я хочуПолиморфное отношениеpoly()
для возврата только пунктов, где type
столбец в Polytable is 1
.
До сих пор я ударил в проблему производительности базы данных, с функцией polyTypeOne()
Пример использования функции polyTypeOne
$wollies = woly::all();
foreach($wollies as $w)
{
$w->polyTypeOne = $w->polyTypeOne();
}
Что является лучшим способом для выполнения такой функции?
Какие проблемы с производительностью и где выполняется код? –
Проще говоря, я не могу использовать 'woly :: with ('polyTypeOne') -> all()' для активной загрузки, учитывая, что это не функция отношений. – Mysteryos
Ну, этот кусок не может работать, потому что 1 'all' является статическим методом модели, 2' polyTypeOne' не является отношением. Но удалите 'get()' из него, и он будет работать так, как ожидалось. Во всяком случае, до сих пор нет проблем с производительностью, если вы не ссылаетесь на невозможность использования загруженной загрузки. –