These are chat archives for LaravelRUS/chat

9th
May 2014
Roman
@TeroBlaZe
May 09 2014 03:02
@Big-Shark ну да, спасибо @vanchelo что подсказал про метод getResults
Maxim
@Big-Shark
May 09 2014 03:10
@TeroBlaZe странно, он там вроде и не нужен, должно так работать
public function getDonateAttribute() {
        return array_key_exists('donate', $this->relations) ? $this->relations['donate'] : new Donate();
    }
хотя тут наверное лучше иссет сделать
Orel
@2byte
May 09 2014 05:12
Без скобок в eval объект не создается :question:
var str='{a:"www"}';
var obj=eval("("+str+")");
slider23
@slider23
May 09 2014 08:44
Сегодня Я Узнал, что Laravel может держать два соединения с БД - с одного читать, в другое писать.
Видимо, сие нужно если есть репликация и высокая нагрузка.
Brezhnev Ivan
@vanchelo
May 09 2014 08:44
покажи пример)
т.е. писать в мастер, а читать со слейва.
Brezhnev Ivan
@vanchelo
May 09 2014 08:45
классно, это что-то новенькое)
Brezhnev Ivan
@vanchelo
May 09 2014 08:54
еще вот такая есть штука
т.е. можно несколько указывать серверов, и лара будет рандомно выбирать какой использовать
или я не правильно понял?
slider23
@slider23
May 09 2014 09:00
Походу да, можно несколько read задавать, например, будет выбираться случайный
Brezhnev Ivan
@vanchelo
May 09 2014 09:00
в доках есть об этом?
slider23
@slider23
May 09 2014 09:01
В принципе, репликация выполняется очень быстро, но надо иметь свободный канал. У меня когда под вечер картинки массово качаются, репликация, бывает, на время падает
в доках в 4.1 нет
в dev тоже нет
Brezhnev Ivan
@vanchelo
May 09 2014 09:02
значит у них еще руки не дошли)
slider23
@slider23
May 09 2014 09:04
крутая фича, кстати, если она из коробки.
Brezhnev Ivan
@vanchelo
May 09 2014 09:04
у меня версия 4.1 там уже это есть
slider23
@slider23
May 09 2014 09:06
можно масштабироваться в mysql в довольно больших масштабах
В Yii2 такое будет, интересно ? :)
Brezhnev Ivan
@vanchelo
May 09 2014 09:07
получается такой примерно конфиг должен быть
'mysql' => [
    'read' => [
        [
            'host' => '192.168.1.1'
        ],
        [
            'host' => '192.168.1.2'
        ]
    ],
    'write' => [
        [
            'host' => '192.168.1.1'
        ],
        [
            'host' => '192.168.1.2'
        ]
    ]
]
это для рандомной выборки сервера
slider23
@slider23
May 09 2014 09:10
да
slider23
@slider23
May 09 2014 09:15
Добавил в русскую доку :)
Brezhnev Ivan
@vanchelo
May 09 2014 09:35
))
Roman
@TeroBlaZe
May 09 2014 10:37
@Big-Shark и что это получается значит если я делаю запрос с with() то возвращается relations['donate'] а если просто сделать запрос User::first()->donate->balance то выведет null)) из-за того, что вместо результата возвращается просто объект класса
Roman
@TeroBlaZe
May 09 2014 10:58

ахаха магия какая-то сейчас начал проверять вчерашнее решение и опять не работает :D попробовал немного другое условие и всё опять заработало... что интересно, эти запросы на первый взгляд делают одного и то же.

        $don = isset($this->relations['donate']) ? $this->relations['donate'] : $this->donate()->getResults();
        $don = array_key_exists('donate', $this->relations) ? $this->relations['donate'] : $this->donate()->getResults();

Но если включить вывод запросов то в первом случае

string 'select * from `users`' (length=21)
string 'select * from `donates` where `donates`.`user_id` in (?, ?, ?, ?, ?, ?,...
int 1111
int 333
string 'select * from `donates` where `donates`.`user_id` = ? limit 1' (length=61)
int 0
string 'select * from `donates` where `donates`.`user_id` = ? limit 1' (length=61)
int 0
...............

А вот во втором правильный 1+1 и лишь 2 запроса для всего. Это конечное и по ходу идеальное решение моей проблемы

Brezhnev Ivan
@vanchelo
May 09 2014 10:59
советую почитать о разнице между isset и array_key_exists
Roman
@TeroBlaZe
May 09 2014 11:00
да я это уже на практике понял
Brezhnev Ivan
@vanchelo
May 09 2014 11:00
нее, ты почитай в чем разница!
Roman
@TeroBlaZe
May 09 2014 11:01
ну isset Проверяет на существование переменной, что приводит к выполнению, а второе к существованию ключа
что тут не ясно
Brezhnev Ivan
@vanchelo
May 09 2014 11:01
$x = ['x' => null]
isset($x['x']) вернет false
array_key_exists('x', $x) вернет true
Roman
@TeroBlaZe
May 09 2014 11:03
а в relations может быль нул?
Brezhnev Ivan
@vanchelo
May 09 2014 11:04
нужно код смотреть, но раз у тебя было сообщение Try to get ... то видимо может
судя по коду может быть Null
Roman
@TeroBlaZe
May 09 2014 11:05
это писало из-за того, что я пытался получить доступ к полю несуществующего класса
Brezhnev Ivan
@vanchelo
May 09 2014 11:06
объекта
Roman
@TeroBlaZe
May 09 2014 11:06
да, вот смотри целиком сейчас код выложу рабочий
Brezhnev Ivan
@vanchelo
May 09 2014 11:06
array_key_exists шакр тебе правильно посоветовал
ой там начало не из того класса :D там User модель а не контроллер
Roman
@TeroBlaZe
May 09 2014 11:45
Кстати может у кого есть совет, как грамотнее связать между собой таблицы из двух бд. Я их разделил из-за того, что они логически связаны лишь одной таблицей. Но первая база(приложение сайт) должна знать знать и иметь доступ ко второй БД, а второй бд(второму приложению) не обязательно и не нужно иметь доступ к первой базе, (От первой базы иногда приходит Имя пользователя по которому создаются новые поля и приложение работает только со своей бд) К примеру база сайта, где есть таблица юзеры, посты, комментарии и т.п. и другая база, где есть таблица с персонажами(что-то типа юзеров но с другими полями, одинаковые только юзернеймы), таблица контрольных точек персонажа, и другие подобные таблицы никак не знающие про первую бд.
Roman
@TeroBlaZe
May 09 2014 11:51
сейчас у меня такая логика, что "юзер" HasOne "персонаж" по полю username, собственно из-за этого и возникает та проблема когда активная загрузка не загружает персонажа, если имя юзера не совпадает по регистру с именем персонажа
Brezhnev Ivan
@vanchelo
May 09 2014 11:52
а че не создавать записть о донате при создании юзера?
тогда и проверять ничего не надо
или при первом обращении если нет у него баланса то создать
Roman
@TeroBlaZe
May 09 2014 12:03
Тут проблема не совсем с балансом, я это поле перенес в таблицу юзеров и теперь немного проще, проблема в другом. Смотри есть два приложения и две базы. Юзер регается в первом приложении, заходит во второе по этим данным и вот второе передается только имя пользователя, где уже по этому имени и создаются поля баланса и прочее. Но до того момента, как пользователь не авторизовался во втором приложении, в первом приложени будут ошибки из-за несуществующих полей во втором, поэтому мне и нужны были базовые значения, которые бы возвращались пока пользователь не авторизован во втором
Brezhnev Ivan
@vanchelo
May 09 2014 12:04
))
Roman
@TeroBlaZe
May 09 2014 12:05
да xD жиесть)
поэтому мне и требуется трезвый взгляд на всё это и совет
Roman
@TeroBlaZe
May 09 2014 12:10
у меня была мысль объединить обе базы и таблицы юзеры и персонажи и из двух приложений обращаться к одной бд, что решило бы некоторые из проблем, но всё равно поля в некоторых таблицах бы создавались только после авторизации именно во втором приложении
Уж извиняйте за такое откровенное невежество, просто я уже давно с этим пытаюсь разобраться и хочу сделать всё грамотно, а не тяп-ляп
Brezhnev Ivan
@vanchelo
May 09 2014 14:17
как установить лару автоматом со всеми настройками и пакетами?
slider23
@slider23
May 09 2014 16:50
клонировать с определенного подготовленного репозитория :)
Brezhnev Ivan
@vanchelo
May 09 2014 17:09
оо, спс, я и не подумал)
сначала клонировать а потом просто composer install/update сделать?
slider23
@slider23
May 09 2014 17:15
или так, или можно прям с vendor в репозитории держать
Brezhnev Ivan
@vanchelo
May 09 2014 17:28
kriswallsmith/assetic кто каким assets manager пользуется?
slider23
@slider23
May 09 2014 17:29
я сначала юзал этот, еще на кохане, а потом понял, что это проблема, а не решение
Brezhnev Ivan
@vanchelo
May 09 2014 17:29
)
а на чем в итоге остановился?
slider23
@slider23
May 09 2014 17:32
в итоге пришел в ларавель, а здесь asset:publish есть
и все, проблем нет :)
Brezhnev Ivan
@vanchelo
May 09 2014 17:33
а пожать, объеденить как
slider23
@slider23
May 09 2014 17:35
gulp в процессе разработки
сжимать на сервере - это плохой путь
в phpstorm есть терминал, там запускаю gulp watch, он сечет изменения
Brezhnev Ivan
@vanchelo
May 09 2014 17:36
а как ты подключаешься скрипты во вьюхе?
slider23
@slider23
May 09 2014 17:37
напрямую
куда гульп сжимает
Brezhnev Ivan
@vanchelo
May 09 2014 17:37
из контроллеров не подключаешь?
slider23
@slider23
May 09 2014 17:37
нет
из главного лейаута
Brezhnev Ivan
@vanchelo
May 09 2014 17:38
т.е. у тебя в итоге один скрипт получается?
slider23
@slider23
May 09 2014 17:38
имхо, не стоит в этом месте изобретать велосипед. я раньше тоже думал все держать в less и преобразовывать на лету
css, если их не 10, а 2-3- штуки, я не объединяю, а подключаю так
js объединяю, ибо их может быть много
Brezhnev Ivan
@vanchelo
May 09 2014 17:39
на счет gulp я понял, меня он заинтересовал
slider23
@slider23
May 09 2014 17:39
gulp, grunt, можно разное юзать
у gulp просто синтаксис чуть попроще. Но тоже с эмм.. со своими заебами, в общем, грубо говоря
Brezhnev Ivan
@vanchelo
May 09 2014 17:40
)
slider23
@slider23
May 09 2014 17:41
но разобраться можно. правда, я лично матерился некоторое время
"был напуган"
Brezhnev Ivan
@vanchelo
May 09 2014 17:41
сейчас уже положительные эмоции?
slider23
@slider23
May 09 2014 17:42
Сейчас разобрался :)
вот скрипт объединения angular-приложения:
var gulp = require('gulp');
var concat = require('gulp-concat');

var paths = {
    "angular" : [
        "./public/angular/app/config.js",
        "./public/angular/app/controllers/*",
        "./public/angular/app/directives/*",
        "./public/angular/app/filters/*",
        "./public/angular/app/services/*",
        "./public/angular/app/common/*"
    ]
}

gulp.task('angular', function(){
    gulp.src(paths.angular)
            .pipe(concat("final.js"))
            .pipe(gulp.dest("./public/angular/app"))
});

gulp.task("watch", function(){
    gulp.watch(paths.angular, ["angular"]);
});

gulp.task('default', ['watch']);
Brezhnev Ivan
@vanchelo
May 09 2014 17:43
симпатично, и просто
slider23
@slider23
May 09 2014 17:44
из доки не очевидно, как работает concat(). Я думал, там надо перечислять файлы, которые надо объединять, а потом сохранять при помощи gulp.dest()
А оказывается, там должно быть имя конечного файла
пока я это понял, было много мата :)
Brezhnev Ivan
@vanchelo
May 09 2014 17:45
мне этот синтаксис больше нравится чем grunt'а
slider23
@slider23
May 09 2014 17:46
да, у грюнта тяжелее
тут почеловечнее
в общем, запускаю gulp watch, и он сечет изменения в src и объединяет их в один файл, очень быстро.
Brezhnev Ivan
@vanchelo
May 09 2014 17:47
классно
slider23
@slider23
May 09 2014 18:06
http://laravel-news.com/2014/05/laravel-4-2-beta-1-released
Soft Deleting Models Now Use Traits
View / Pagination Environment Renamed
Additional Parameter On Pagination Presenter
Brezhnev Ivan
@vanchelo
May 09 2014 18:07
трэйты давно пора бы начать юзать)
поскорее бы уже 4.2 вышел
Alexey
@Butochnikov
May 09 2014 19:24
вышел патч и починили generate в php storm 8
и как вам 4.2? не мало для такой версии? да еще теперь на 5.3 не запустишь
slider23
@slider23
May 09 2014 19:27
Мало. Но это бета 1, надеюсь, будет больше разного интересного.
Alexey
@Butochnikov
May 09 2014 19:28
ты думаешь за 3 недели сделают то, что за полгода не сделали?
Ekuzkamaza
@Ekuzkamaza
May 09 2014 19:29
да для новой версии тухловато дополнений, думаю дело в маркетинге пора новую версию стряпать
Alexey
@Butochnikov
May 09 2014 19:30
я так понял laravel не победил в .net awards?
хотя понятно прогеров на JS больше
жаль gulp не участвовал, grunt бы не выиграл бы
Alexey
@Butochnikov
May 09 2014 19:36
Даже Максим не победил. Как "Сaniuse" может быть лучше bootsnipp?
Brezhnev Ivan
@vanchelo
May 09 2014 20:28
так это уже рандом коллекции результатов а не рандомная выборка
для этого проще на githube код глянуть) или в phpstorm reverse engineering провести, что еще проще
Roman
@TeroBlaZe
May 09 2014 21:24
поскорей бы уже в phpstorm ввели поддержку blade... а то всегда, как доходит дело до вьюх, хоть глаз выколи))
Brezhnev Ivan
@vanchelo
May 09 2014 22:52
без глаз тебе легче точно не станет)