@scala_ru

Страница 110 из 1499
Igor
21.09.2016
12:01:50
Нужны люди, которые будут ходить в офис

folex
21.09.2016
12:36:06
неплохой ресурс

но заблокирован, да

Google
Anatoliy
21.09.2016
12:54:56
Доброго дня всем! :) Есть кто использует Slick?) Можете подсказать как можно сделать что бы не приходилось при join'e в каждом выводе проверять наличие приджойнившейся таблицы? А то как-то не очень удобно получается при выводе проверять каждое поле отдельно...

Kyrylo
21.09.2016
12:56:00
" каждом выводе проверять наличие приджойнившейся таблицы?"

есть пример кода? того чего ты пытаешся избежать

а то я не очень понял

Anatoliy
21.09.2016
12:57:42
<td>@company._2.getOrElse(model.User()).login</td> не хочу для каждого поля делать проверку. Очень хочется просто делать вывод "как есть" т.е. по типу @company._2.login Понятно что это надо до вывода делать, но это можно провернуть при самом запросе?

Vladimir
21.09.2016
12:59:13
а Slick сам запрос покажи

Anatoliy
21.09.2016
12:59:20
db.run(table.joinLeft(Users.table).on(_.user_id === _.id).result)

Diemust
21.09.2016
12:59:42
а просто join тоже Option возвращает?

Vladimir
21.09.2016
12:59:49
нет

Diemust
21.09.2016
12:59:55
ну и вот тогда

=)

Vladimir
21.09.2016
12:59:57
есть leftJoin он Option[T]

есть join он T

Google
Kyrylo
21.09.2016
13:00:07
?

Vladimir
21.09.2016
13:00:11
но может ему такой запрос именно нужен

Anatoliy
21.09.2016
13:00:21
угу, и что будет если там не окажется связки? упадет все с грохотом?

Kyrylo
21.09.2016
13:00:33
innerJoin

по умолчания

Diemust
21.09.2016
13:00:40
пропустит запись, где не джойнится

как скл, в общем

Kyrylo
21.09.2016
13:00:47
да

Anatoliy
21.09.2016
13:01:00
угу, но мне надо то вывести все)

Kyrylo
21.09.2016
13:01:14
тогда это как раз место для Option

не надо избешать его

Vladimir
21.09.2016
13:01:24
<td>@company._2.map(_.login)</td>

Diemust
21.09.2016
13:01:25
делай в yield getOrElse, минимум красивей будет

Vladimir
21.09.2016
13:01:25
вот так пиши

Play шаблоны None умеют обрабатывать

Anatoliy
21.09.2016
13:01:40
угу, но если записи нет - я хочу подставить просто пустой User и вывести его как есть везде

делай в yield getOrElse, минимум красивей будет
вот не понимаю я этот yield от слова совсем

Aleksei
21.09.2016
13:02:23
не интуитивный он какой-то

Diemust
21.09.2016
13:02:28
ну делаешь цепочку flatMap - это все что в for, а в конце бац, и просто map, это yield

Vladimir
21.09.2016
13:02:42
> <td>@company._2.map(_.login)</td> Так не хочется писать?

Google
Kyrylo
21.09.2016
13:02:42
<td>@company._2.map(_.login) getOrElse { /*пустой юзер*/ }</td>

Anatoliy
21.09.2016
13:02:43
так я и не хочу избегать Option, я хочу просто если у меня там ничего нет - впихнуть туда пустую модельку

Vladimir
21.09.2016
13:02:52
а именно модельку)

Anatoliy
21.09.2016
13:02:53
folex
21.09.2016
13:02:57
В скале ж максимально простой yield, без всяких генераторов или ленивостей. Просто map после цепочки flatMap’ов

Anatoliy
21.09.2016
13:03:44
так я так и делаю щас
хотя не, не так я делал, прошу прощения

Vladimir
21.09.2016
13:03:56
я везде так короче писал <td>@company._2.map(_.login)</td>

Anatoliy
21.09.2016
13:04:06
> <td>@company._2.map(_.login)</td> Так не хочется писать?
так даже не думал писать, а оказывается работает

Vladimir
21.09.2016
13:04:16
ну так это ж и есть сила

map :)

и монады Option

Vladimir
21.09.2016
13:04:43
ещё можно от _2 избавиться

Anatoliy
21.09.2016
13:04:46
угу) и тогда еще такой вопрос, можно вместо _2 что бы писалось user а вместо _1 company например?

Vladimir
21.09.2016
13:05:05
ща сек

можешь шаблон от места где он в цикле что-то рисует

и полный slick запрос

Anatoliy
21.09.2016
13:06:09
@for(company <- companies) { <tr> <td>@company._1.id</td> ... } db.run(table.joinLeft(Users.table).on(_.user_id === _.id).result)

folex
21.09.2016
13:06:24
в ТГ есть ```

Google
folex
21.09.2016
13:06:31
в него многострочники заворачивай, чтобы моношринно было, как в IDE

Anatoliy
21.09.2016
13:07:05
Поправил

folex
21.09.2016
13:07:08
типа того да

Diemust
21.09.2016
13:08:31
а надо что-то говорить, что вызов в дб делать в темплейте - не круто или это отход от темы?

или в плее норм?

Anatoliy
21.09.2016
13:09:03
Что значит вызов в ДБ в темплейте? там уже просто вывод

Diemust
21.09.2016
13:09:27
а, сорян, не так посомтрел =)

Vladimir
21.09.2016
13:09:53
@for((smth, user) <- companies) { <tr> <td>smth.id</td> ... }

Admin
ERROR: S client not available

Vladimir
21.09.2016
13:10:04
антапл можно в for делать

Play понимает

ну там @smth.id

а не просто smrrh

ну вы поняли)

Anatoliy
21.09.2016
13:11:15
Спасибо. По поводу yield - я так понимаю в моем случае надо так: for{ (company, user) <- table joinLeft Users.table on (_.user_id === _.id) } yield (company, user) ?

Vladimir
21.09.2016
13:11:45
это ты про шаблон?

или про slick

я про шаблон

Anatoliy
21.09.2016
13:12:12
про слик уже - как делать через yield запросы?

Vladimir
21.09.2016
13:12:19
а зачем через yeild

Google
Vladimir
21.09.2016
13:12:20
да так

только пользы от этого

там и там бы был tuple2

Anatoliy
21.09.2016
13:12:30
про шаблон - спасибо понял) не понимаю почему сам так не додумался

Vladimir
21.09.2016
13:12:45
то что ты два раза эти переменые распокавал-спаковал

Anatoliy
21.09.2016
13:12:50
Просто через yield вот этот вариант что выше у меня не сработал

Vladimir
21.09.2016
13:12:50
это только если они нужны дальше

или ты хочешь с ними что-то сделать

Vladimir
21.09.2016
13:13:20
for{ (company, user) <- table joinLeft Users.table on (_.user_id === _.id) } yield (company, user.getOrElse(EmptyUser)) ? максимум бы такой вариант помог

тогда бы выл на выходе всегда (Company,User) а не (Сompany,Option[User])

или ты про вообще синтаксис yield?

Anatoliy
21.09.2016
13:14:14
Вообще про синтаксис, у меня то что я выше написал - не работает)

Vladimir
21.09.2016
13:14:30
db.run((for {(i, b) <- TableQuery[TblIncome] join TableQuery[TblBankMoneyOrder] on (_.bankMoneyOrderId === _.id)} yield (i, b)).result)

вот так надо

всё это в скобки

и по нему result

и внутрть db.run

Anatoliy
21.09.2016
13:14:54
Хм... спасибо

Vladimir
21.09.2016
13:15:52
ну если у тебя не цепочка запросов, которые ты все в одну транзакцию хочешь засунуть

то сильного смысла в yeild нет

Страница 110 из 1499