Я тоже Третий день ковыряю.Я честно говоря, тупо слабо понимаю их структуру. (
ага, так и есть. Ща посмотрю!Но у слова то много смыслов, значит и синонимы у каждого смысла, верно?
return View::make('word', [
'word' => Word::where('lemma', '=', 'good')
->with([
'sense',
'sense.synset',
'sense.synset.sample',
'sense.synonyms.word'
])
->get(),
'query' => DB::getQueryLog(),
]);
Антонимы сделал тоже, получилось в сумме 8 запросов, суммарным временем исполнения ~10 миллисекунд
Потому что я ленивая жопа, и писал второпях и под виндой )))) Вообще там должно быть имя класса модели по нормальному PSR.Почему у меня имя класса в hasMany подцепилось только в том же регистре - Sense, Word?
Оно не будет коллекцией, если связь один-к-одному, но я там переиспользую существующую связь sense->word, которая один-к-многим (что возможно, неверно, я не уверен). Если оно все же один-к-одному, то hasOne и индекс массива не нужен там.Можно сделать так, чтобы слово, возвращаемое в коллекции синонимов, само не было коллекцией (чтобы не обращаться к нему, как $syn->word[0]->lemma)?
Я считаю, что нормальная разработка должна идти сверху вниз: Накидал каркас, завел, доработал, нашел проблемные места, если спустя месяц вдруг окажется, что у меня тормозят синонимы, я выкину из метода synonyms() hasMany() сделаю там выборку чистым SQL, и верну заполненную модель, а не буду месяц обсуждать, что мне нужно выделить в persistense layer или в другой модный на этот момент слой domain model. А скорее всего, в 99% случаев, я в это место никогда не вернусь, просто потому что оно тормозить не будет. Возможно это уже сделаю даже не я, но логика заложенная не пострадает. Этот подход мне кажется тем самым CI по факту, которое тут в соседней теме не могут понять.Я начинаю уважать Ларавель.
Во, ваще, чистый маркетинг, умные слова, показывающие всю «сложность» и «абсурдность» иных, отличных от Laravel-style подходов, подкреплённая фразой «месяц обсуждать». Кто-нибудь из лайкнувших понял о чём тут речь? Я не понял что тут можно «месяц обсуждать» и какое отношение domain model имеет к инфраструктурному слою (raw SQL vs ORM vs ...).а не буду месяц обсуждать, что мне нужно выделить в persistense layer или в другой модный на этот момент слой domain model
Вообще-то это нам позволяет делать инкапсуляция, а не божественный Laravel. Ты это преподносишь так, словно это нечто эксклюзивное. Этого можно достичь просто написаввыкину из метода synonyms() hasMany() сделаю там выборку чистым SQL <...> Возможно это уже сделаю даже не я, но логика заложенная не пострадает.
return View::make('word', [
'word' => $this->wordRepository->findByLemma('good'),
'query' => DB::getQueryLog(),
]);
Не вижу в моем посте ни единой буквы, где я говорю, что это заслуга исключительно Laravel. А "что вынести в persistense layer" обсуждают в этом треде до моего сообщения.Я тут никакой заслуги Laravel не вижу вообще.