These are chat archives for LaravelRUS/chat

26th
Jan 2017
NoViKoFF
@AndrewNovikof
Jan 26 2017 05:38 UTC
@3gsxarakiri , начнем с банального..Ты филэйбл поля указал?)
@3gsxarakiri плюс, ты как мудришь, создавая Партнера через экземпляр модели, не создав при этом итем в коллекции Инспекций. Откуда елокуэнт поймет к какой инспекции относится партнер, если ее ещё нет? Ты или создавай Инспекцию, и через нее партнера, или создавай партнера, а потом через него инспекцию
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 06:15 UTC

@AndrewNovikof разумеется указал:)

protected $table = 'UserInspection';
protected $fillable = ['inspection_id', 'partner_id', 'status', 'disable_id', 'comment'];

и

protected $table = 'Partner';
protected $fillable = ['uid', 'login', 'balance', 'hold', 'orders', 'approve', 'fail', 'done'];

а что касается второй части, то разумеется я сперва создаю проверку:) Что собстенно отображено в последнем "мини-листинге"

$userInspection = new UserInspections(); //Создаю инспекцию
$userInspection->partners()->create([
         some data here
]); //создаю партнера через только что созданную инспекцию
Andrei Sosnov
@atehnix
Jan 26 2017 06:30 UTC
@3gsxarakiri создаешь, но не сохраняешь.. ;)
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 06:39 UTC

@atehnix а если так ;-)

$userInspection = UserInspections::create([]); //здаю пустую проверку (в базе пишутся default-значения) 
$inspection->UserList()->save($userInspection); //Добавляю в список проверок

some code here

$userInspection->partners()->create([
   some data here
 ]); // пытаюсь добавить партнера в проверку

в итоге, запись в таблице userinspections создается, в ней даже корректно прописан ID от листа проверок, а вот id партнера не прописан :(
userispection

Конечно, я могу просто "ручками" прописать id партнера, в поле partner_id инспекции(проверки), через update, но не думаю, что это правильное решение :worried:
Andrei Sosnov
@atehnix
Jan 26 2017 06:52 UTC
@3gsxarakiri у тебя какой-то странный нейминг, из-за которого тяжело ориентироваться что у тебя к чему привязываться должно)
Связь hasOne с именем во мн.числе, модели во мн.числе, а таблицы в ед.числе (обычно наоборот) и т.д.. Не то чтобы это совсем критично, но понимать немного мешает, ибо диссонанс)
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 07:00 UTC
@atehnix Спасибо большое, за замечание! Обязательно исправлю:)
KarmaBot
@KarmaBot
Jan 26 2017 07:00 UTC
Спасибо (+1) для @atehnix принято! Текущая карма +198.
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 07:00 UTC
Но вот сперва хотелось бы понять, почему он, гад эдакий, не сохраняет партнера :(
NoViKoFF
@AndrewNovikof
Jan 26 2017 07:25 UTC
@3gsxarakiri
Твою мать, через андроид прилагу все криво работает. Буду за компом опишу где ты не прав)
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 07:37 UTC
@AndrewNovikof с нетерпением жду, а то я в упор свой косяк не вижу :-(
Soprun Vladislav
@vlsoprun
Jan 26 2017 07:51 UTC
Здорова мужики!
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 07:53 UTC
Привет!
KarmaBot
@KarmaBot
Jan 26 2017 07:53 UTC
@3gsxarakiri и тебе не хворать :)
NoViKoFF
@AndrewNovikof
Jan 26 2017 07:59 UTC
@3gsxarakiri
Ну вообще вот так должно работать:
$user_inspection = UserInspections::create([ 
  some fields bla bla bla
 ]);
$user_inspection->partners()->create([
  some fields bla bla bla
 ]);
@3gsxarakiri Т.е. тебе нужно от СОЗДАННОГО экземпляра модели создавать связанный экземпляр модели
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 08:01 UTC

Собственно я так и делаю :(

@atehnix а если так ;-)

$userInspection = UserInspections::create([]); //здаю пустую проверку (в базе пишутся default-значения) 
$inspection->UserList()->save($userInspection); //Добавляю в список проверок

some code here

$userInspection->partners()->create([
   some data here
 ]); // пытаюсь добавить партнера в проверку

в итоге, запись в таблице userinspections создается, в ней даже корректно прописан ID от листа проверок, а вот id партнера не прописан :(
userispection

NoViKoFF
@AndrewNovikof
Jan 26 2017 08:01 UTC
@3gsxarakiri Нет
Хотяяя
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 08:03 UTC

Видимо еще не проснулся и не понимаю Вас:(

$user_unspection = UserInspections::create([ 
  some fields bla bla bla
 ]); //Указали Вы

$userInspection = UserInspections::create([]); //Указал я

$user_unspection->partners()->create([
  some fields bla bla bla
 ]);//Указали Вы

$userInspection->partners()->create([
   some data here
 ]);//Указал я

Идентично же:)

NoViKoFF
@AndrewNovikof
Jan 26 2017 08:04 UTC
@3gsxarakiri видимо я тоже не проснулся :smile:
@3gsxarakiri у нас принято обращаться на Ты))
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 08:04 UTC
Хорошо:)
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 08:12 UTC
Я вот уже грешным делом на связь грешу... что неправильно настроил, но тоже не вижу проблемы :(
Schema::table('UserInspection', function (Blueprint $table){
            $table->foreign('partner_id')->references('id')->on('Partner')->onDelete('cascade');
        });
NoViKoFF
@AndrewNovikof
Jan 26 2017 08:13 UTC
@3gsxarakiri мда, со стандартами у тебя проблема) Посмотри, работает ли релэйшен partner вообще
@3gsxarakiri Таблицы должны быть snake_case в множественном числе
Модели должны быть CamelCase в единственном числе
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 08:15 UTC

@AndrewNovikof ну, что стандарты у меня "гуляют", это да, нужно исправляться :(
что касается связи, то да, она работает, иначе как бы через такую запись

$userInspection->partners()->create([
   some data here
 ]);

создался бы партнер, но он ведь создается корректно.

NoViKoFF
@AndrewNovikof
Jan 26 2017 08:16 UTC
Тогда я умываю руки :smile:
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 08:17 UTC

Пойду тогда хотя бы миграции поправлю, согласно этим рекомендациям, а то от решения этой проблемы уже голова зудит :)

@3gsxarakiri Таблицы должны быть snake_case в множественном числе
Модели должны быть CamelCase в единственном числе

@AndrewNovikof Видимо пока будут "ручками" прописывать id партнера в поле Инспекций, а там смотри, может и решение найдется)
Xannn94
@Xannn94
Jan 26 2017 08:25 UTC

Всем привет. Ребят подскажите почему роут может не срабатывать?
.htaccess все проверил.
вот собственно сам роут:

Route::get('robots.txt',function (){
        dump('test');
    });

в браузере перехожу по адрессу:
myapp.test/robots.txt
Все остальные роуты работают

Andrei Sosnov
@atehnix
Jan 26 2017 08:26 UTC
@Xannn94 потому что в public лежит файл с идентичным именем.
Xannn94
@Xannn94
Jan 26 2017 08:27 UTC
@atehnix если уберу оттуда этот файл то будет срабатывать роут?
Andrei Sosnov
@atehnix
Jan 26 2017 08:27 UTC
@Xannn94 что стоит проверить?)
Xannn94
@Xannn94
Jan 26 2017 08:28 UTC
@atehnix спасибо)
KarmaBot
@KarmaBot
Jan 26 2017 08:28 UTC
Спасибо (+1) для @atehnix принято! Текущая карма +199.
Xannn94
@Xannn94
Jan 26 2017 08:29 UTC
@atehnix а кроме как перетаскивать куда-нибудь этот файл есть вариант попадать сразу в роут?
Andrei Sosnov
@atehnix
Jan 26 2017 08:32 UTC
@Xannn94 настроить nginx/apache, чтобы игнорировал этот файл в public. Но хз зачем так извращаться)
Xannn94
@Xannn94
Jan 26 2017 08:32 UTC
да чтобы в настройках выключать его по надобности)
Andrei Sosnov
@atehnix
Jan 26 2017 08:35 UTC
@Xannn94 ну так если удалишь файл в public - будешь попадать в роут. А в нем уже в зависимости от твоих настроек возвращай/не возвращай то что тебе надо)
Xannn94
@Xannn94
Jan 26 2017 08:52 UTC
@atehnix спасибо)
KarmaBot
@KarmaBot
Jan 26 2017 08:52 UTC
Спасибо (+1) для @atehnix принято! Текущая карма +200.
Ivan
@Hunternnm
Jan 26 2017 08:56 UTC
@atehnix о, дошел до нормального http-кода
Andrei Sosnov
@atehnix
Jan 26 2017 09:00 UTC
@Hunternnm :ok: )
PheRum
@PheRum
Jan 26 2017 11:32 UTC
привет парни. кто-нить юзает ларавельную датабазу вне ларавела?
Arsen Soroka
@arsen-s
Jan 26 2017 11:35 UTC
есть какая то особенная БД в ларке?
JhaoDa
@jhaoda
Jan 26 2017 11:35 UTC
@arsen-s он про illuminate/database
Просто ему лень писать человекопонятно :)
@PheRum ну есть тут минимум один такой человек
Andrei Sosnov
@atehnix
Jan 26 2017 11:37 UTC
@PheRum ну есть тут минимум два таких человек
@PheRum рады были помочь! :)
Ivan
@Hunternnm
Jan 26 2017 11:51 UTC
Тут три таких человека
Denys
@dfinchenko
Jan 26 2017 12:01 UTC
Всем привет! Сорри за такой может тривиальный вопрос, но необходимо с MySQL сначало получить все данные и потом получать только новые записи. Подскажите пожалуйста как реализовать.
Andrei Sosnov
@atehnix
Jan 26 2017 12:05 UTC
@dfinchenko что " как реализовать"?
"Как получить данные"? "Как получить данные с условием"?
zanec92
@zanec92
Jan 26 2017 12:23 UTC
всем привет! подскажите пожалуйста, как версионировать(version()) комбинированные файлы(combine()) через laravel mix? версионирование срабатывает только для компиленных файлов. и почему после компиляции пропадает объект jquery из app.js?
stranger-ru
@stranger-ru
Jan 26 2017 12:23 UTC

Всем привет.

У модели в БД хранится два поля first_name и last_name
Мне нужно определить динамическое поле full_name, которое будет формироваться на основании полей, хранящихся с БД, что-то вроде:

public function getFullName() 
{
    return $this->first_name . ' ' . $this->last_name;
}

и далее при получении списка моделей:

    $peoples = People::find()->all()

у меня это поле было в результате:

[
    {
        first_name: 'Alexander',
        last_name: 'Petrov',
        full_name: 'Alexander Petrov',
    },
    {
        first_name: 'Andrey',
        last_name: 'Ivanov',
        full_name: 'Andrey Ivanov',
    },
    ...
]

Как можно такое реализовать?

JhaoDa
@jhaoda
Jan 26 2017 12:27 UTC
@stranger-ru можно пойти и почитать документацию про аксессоры
Andrei Sosnov
@atehnix
Jan 26 2017 12:28 UTC
@stranger-ru чуть спойлеров, пока я добрый.. :)
accessors & appends
JhaoDa
@jhaoda
Jan 26 2017 12:28 UTC
@atehnix пусть сам бы искал, чо ты
Denys
@dfinchenko
Jan 26 2017 12:30 UTC
@atehnix сам запрос MySQL, чтобы брать только новые записи. Спасибо большое!
Andrei Sosnov
@atehnix
Jan 26 2017 12:32 UTC
@dfinchenko не, я все таки не настолько добрый.. :)
stranger-ru
@stranger-ru
Jan 26 2017 12:33 UTC
@atehnix, @jhaoda спасибо, разобрался.
Denys
@dfinchenko
Jan 26 2017 12:55 UTC
@atehnix что ж, тогда Вам как и мне это надо учить, так как для разработчиков полезная вещь)
Andrei Sosnov
@atehnix
Jan 26 2017 12:58 UTC
гы) :)
@dfinchenko хорошо, спасибо!)
Alexander
@Dualse
Jan 26 2017 13:30 UTC
@dfinchenko А что ты подразумеваешь под "новые записи"?
Denys
@dfinchenko
Jan 26 2017 13:34 UTC
@Dualse по сути подразумеваю реплику с одной таблицы во вторую. Тоесть необходимо повесить скрипт в планировщике, например, на каждый час исполнения, который будет смотреть в главную таб. БД и искать новые записи, которых нет еще во второй БД в этой таб. и добавлять туда.
@Dualse буду очень благодарен за совет!
Alexander
@Dualse
Jan 26 2017 13:43 UTC
@dfinchenko А что тут сложного? Делаешь выборку из одной таблицы, из второй делаешь выборку с условием, что id отсутствуют в первой таблице. whereNotIn тебе поможет
Denys
@dfinchenko
Jan 26 2017 13:51 UTC
Решение проблемы может есть и другое, но самое простое - это брать mainid последней перенесенной записи во второую таблицу (куда сладываются новые данные) и получать с главной таблицы записи с большим от этого id )) Всем хорошего дня!)
@Dualse спасибо большое!
Alexander
@Dualse
Jan 26 2017 14:16 UTC
@SerafimArts бот лежит или со стороны гиттера проблемы?
zanec92
@zanec92
Jan 26 2017 14:38 UTC
может кто-нибудь с laravel mix помочь??)
Alexander
@spartaque
Jan 26 2017 14:39 UTC
Не подскажете как правильно сделать "жесткий" редирект? через echo redirect($url);exit; выводится ненужная инфа и только через пару секунд идет редирект. Есть еще способы?
zanec92
@zanec92
Jan 26 2017 14:42 UTC

@spartaque

return redirect()->route('route-name');

так?

Alexander
@spartaque
Jan 26 2017 14:42 UTC
@zanec92 мне нужно на другой домен отправить
zanec92
@zanec92
Jan 26 2017 14:47 UTC

@spartaque

header('Location: http://www.example.com/');
exit;

тогда так))

Alexander
@spartaque
Jan 26 2017 14:47 UTC
@zanec92 :fire:
JhaoDa
@jhaoda
Jan 26 2017 14:50 UTC
@spartaque ну и отправляй на другой домен, проблема-то в чем?
Alexander
@spartaque
Jan 26 2017 14:51 UTC
@jhaoda так я думал может хэлпер какой есть или райт вей как сделать это
JhaoDa
@jhaoda
Jan 26 2017 14:52 UTC
@spartaque какой ещё хэлпер тебе нужен?
Alexander
@spartaque
Jan 26 2017 14:55 UTC
@jhaoda я уже его написал, думал есть встроенный или что-то еще
Murad
@Muradg
Jan 26 2017 14:56 UTC
Доброго вечера всем. У меня такой вот вопрос. Стоит задача, сделать публикацию постов в социальных сетях при добавлении новостей. Нашел готовые классы, хочу внедрить их в лару. Как лучше хранить эти классы ? В папке вендор, или где-то отдельно ?
nejtr0n
@nejtr0n
Jan 26 2017 14:57 UTC
@spartaque redirect('http://ya.ru') можешь. Если не из контроллера, тогда ->send() ещё добавить
Ivan
@Hunternnm
Jan 26 2017 14:58 UTC
@Muradg если пакеты то вендор, нет - где тебе удобно
zanec92
@zanec92
Jan 26 2017 14:59 UTC
@spartaque
тута все методы хелпера редиректа
/vendor/laravel/framework/src/Illuminate/Routing/Redirector.php
Alexander
@spartaque
Jan 26 2017 14:59 UTC
@nejtr0n :+1: спасибо! @jhaoda Вот именно то что я хотел:)
JhaoDa
@jhaoda
Jan 26 2017 15:00 UTC
@spartaque ты чо, издеваешься? Тебе нужен хелпер для redirect()->away('http://someshit.com')?
@spartaque ты вообще подсказками IDE не пользуешься? В Блокноте код пишешь, штоле?
Alexander
@spartaque
Jan 26 2017 15:01 UTC
@jhaoda я не знал об away, че ты завелся
JhaoDa
@jhaoda
Jan 26 2017 15:02 UTC
@spartaque так я и спрашиваю, в чем ты код пишешь
Или пишешь только то, что знаешь, а что там IDE подказывает это харам, читать нельзя?
qooco
@qooco
Jan 26 2017 15:22 UTC
Всем привет! Может кто обьяснить мне философию ларавел относительно helpers методов типа config() auth() request() view() redirect() app('myservice')
JhaoDa
@jhaoda
Jan 26 2017 15:22 UTC
@qooco что именно объяснить?
qooco
@qooco
Jan 26 2017 15:25 UTC
но эти функции доступны везде
можно в модельках тянуть сервисы из контейнера
можно в других сервисах
можно во вьюхах
JhaoDa
@jhaoda
Jan 26 2017 15:25 UTC
@qooco можно. Но это не значит, что нужно бездумно пользоваться этой возможностью.
qooco
@qooco
Jan 26 2017 15:27 UTC
@jhaoda да я тоже так думал, всетаки разработчики не использую их везде, у них вполне нормальный подход (хороший в смысле)
JhaoDa
@jhaoda
Jan 26 2017 15:27 UTC
Философия простая: фрейм дал тебе молоток. Стучать по гвоздям, по голове себе или соседу — твоё дело.
qooco
@qooco
Jan 26 2017 15:28 UTC
понимаю. но появятся те кто не будет следовать правильным путем
JhaoDa
@jhaoda
Jan 26 2017 15:28 UTC
И это хорошо, в отличие от разных ЦМС, где ударить по гвоздю молотком можно, но только через прокладку в виде своей головы :)
@qooco они всегда будут, как ты не закрути гайки
Kirill Nesmeyanov
@SerafimArts
Jan 26 2017 15:29 UTC
@Dualse gitter 502 логик можно всегда посмотреть же: https://karma.laravel.su/logs.txt
qooco
@qooco
Jan 26 2017 15:29 UTC
тоже верно
Efexis
@Efexis
Jan 26 2017 17:34 UTC
Всем привет! Может кто-нибудь знает, почему при CORS запросе после удачного ответа на запрос OPTIONS не отправляется POST запрос на нужный экшен?
JhaoDa
@jhaoda
Jan 26 2017 17:35 UTC
@Efexis браузер и его консоль ошибок знают, 146%
Efexis
@Efexis
Jan 26 2017 17:36 UTC
в том то и дело, что ошибок нет
запрос OPTIONS вернул статус 200
после него должен уже отправиться сам запрос, но этого не происходит
JhaoDa
@jhaoda
Jan 26 2017 17:38 UTC
@Efexis из другого браузера пробовал? А почему не пробовал?
Efexis
@Efexis
Jan 26 2017 17:40 UTC
Еще проблема в том, чтоэтот запрос на другое api отправляется как нужно, но с мои апи проблемы
JhaoDa
@jhaoda
Jan 26 2017 17:41 UTC
@Efexis вопросы не относящиеся к ларавел обсуждаются в https://gitter.im/LaravelRUS/offtop
Efexis
@Efexis
Jan 26 2017 17:44 UTC
а если api на Laravel?
JhaoDa
@jhaoda
Jan 26 2017 17:45 UTC
@Efexis давай тогда и вопросы по серверному железу сюда, проект-то на сервере работает
API ответило? Ответило. Запретить браузеру выполнять POST запрос оно может? Нет. Всё, с какого боку тут ларавел? Почему эти элементарные вещи надо объяснять?
Efexis
@Efexis
Jan 26 2017 18:54 UTC
@jhaoda Потому что такой же запрос на другой api - работает. Сверил все заголовки - одинаковы. Авторизация работает и нормально отрабатывает 2 запроса (OPTIONS, POST). А другой контроллер - нет. Запрос с отправкой файла
fakefakefake12
@fakefakefake12
Jan 26 2017 21:14 UTC
аномалия, в модели апендится мусор, у кого-то случалось?
JhaoDa
@jhaoda
Jan 26 2017 21:15 UTC
@fakefakefake12 щито?
fakefakefake12
@fakefakefake12
Jan 26 2017 21:21 UTC
Уно.
Модель поста. http://kopy.io/0hZtE#kfSboSrnlyNQG0
Контроллер + роут http://kopy.io/ImW7v#DjvhRJgBtvdQ3v
И сейчас срин реквеста с браузера (ну или постмана) заверну (куда залить?)
http://i.imgur.com/9Fp37sY.png?1
если указать в $hidden то соотв. не апендится уже.
JhaoDa
@jhaoda
Jan 26 2017 21:25 UTC
@fakefakefake12 ну так и где мусор-то?
fakefakefake12
@fakefakefake12
Jan 26 2017 21:26 UTC
messages почему апендится? или пагинация возвращает с отношением?
JhaoDa
@jhaoda
Jan 26 2017 21:28 UTC
@fakefakefake12 м-да... доку почитать не хочешь?
@fakefakefake12 а эт чо за жуть return $this->user()->first();?
fakefakefake12
@fakefakefake12
Jan 26 2017 21:32 UTC
@jhaoda мда, косячнул. $this->user достаточно же. Можешь в доке указать? Это же про сериализацию модели?
JhaoDa
@jhaoda
Jan 26 2017 21:32 UTC
@fakefakefake12 зачем вообще аксессор для связи? Самой связи мало?
@fakefakefake12 прям во втором предложении
fakefakefake12
@fakefakefake12
Jan 26 2017 21:34 UTC
@jhaoda без аксессора не аппендится (по доке).
JhaoDa
@jhaoda
Jan 26 2017 21:34 UTC
@fakefakefake12 а ты пробовал?
Хотя чо я, видно же, что не пробовал...
fakefakefake12
@fakefakefake12
Jan 26 2017 21:35 UTC
Да, убираю ацессор Call to undefined method Illuminate\Database\Query\Builder::getUserAttribute()
JhaoDa
@jhaoda
Jan 26 2017 21:35 UTC
@fakefakefake12 Иди. Читай. Доку.
fakefakefake12
@fakefakefake12
Jan 26 2017 21:35 UTC
Ушел.
Andrei Sosnov
@atehnix
Jan 26 2017 21:36 UTC
@fakefakefake12 кстати, ты там же еще найдешь "Counting Related Models".. ;)
fakefakefake12
@fakefakefake12
Jan 26 2017 21:37 UTC
Ушел ушел :D
JhaoDa
@jhaoda
Jan 26 2017 21:38 UTC
Вот шо за люди? Сами себе создали проблему, потом в чате спрашивают, как её решить, тогда как достаточно было доку прочитать. Ну это же не рационально по затратам времени, вас самих-то не парит?
Сэкономили на чтении доки 10 минут, 20 минут потратили в чате на выслушивание моих сарказмов. Где профит?
fakefakefake12
@fakefakefake12
Jan 26 2017 21:40 UTC
@jhaoda ну почему же, я тыкнул в аппенд в доке, вижу ацессор, написал ацессор :<
Роман Сохарев
@greabock
Jan 26 2017 21:41 UTC
"я человек простой..." ©
JhaoDa
@jhaoda
Jan 26 2017 21:41 UTC
@greabock точно, только хотел написать :)
fakefakefake12
@fakefakefake12
Jan 26 2017 21:42 UTC
Ну я написал ацессор, попробовал без него - не пашет, вернул.
JhaoDa
@jhaoda
Jan 26 2017 21:42 UTC
Такие все простые, аж инфузории завидуют...
@fakefakefake12 ты читать ушел
fakefakefake12
@fakefakefake12
Jan 26 2017 21:46 UTC
$with найдено. @jhaoda спасибо, что тыкнул.
JhaoDa
@jhaoda
Jan 26 2017 21:46 UTC
@fakefakefake12 и опять не то найдено. $with включает жадную загрузку связей, не более.
А, стопэ, это же сериализация без обращения к полям
@fakefakefake12 тогда найдено то, что надо.
fakefakefake12
@fakefakefake12
Jan 26 2017 21:51 UTC
Но опять, не жадная загрузка, не апенда нет, почему мессаги грузятся?
JhaoDa
@jhaoda
Jan 26 2017 21:51 UTC
@fakefakefake12 $appends тут вообще не при делах
Если связь загружена, то при сериализации она добавится в массив, ну дал же ссылку, ё-маё
fakefakefake12
@fakefakefake12
Jan 26 2017 21:54 UTC
при добавлении messsagesCount апендится и мессаги. бага?
JhaoDa
@jhaoda
Jan 26 2017 21:54 UTC
@fakefakefake12 ты понимаешь, что у тебя для подсчёта мессаг грузятся мессаги? Или не понимаешь?
Это прям как «я же не скачивал кино, я его просто посмотрел в браузере»
fakefakefake12
@fakefakefake12
Jan 26 2017 21:56 UTC
Да, вот тут я и попался со своей тупостью, но доку перечитаю еще раз, обещаю :D
@jhaoda спасибо
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:03 UTC

Всем доброй ночи!
У меня такой вопрос, я выгружаю список партнеров по такому запросу:

$users = UserInspection::with('partner')->get()->toJson();

Но последний партнер мне приходит без связи partner, почему?

вот наглядный пример: скрин

Думал с партнером беда, удалил последнего (тестовая база), но нет, при новой выгрузке у текущего последнего(в предыдущий раз предпоследнего) тоже не было связи, хотя до удаления, все было
JhaoDa
@jhaoda
Jan 26 2017 22:05 UTC
@3gsxarakiri а ты сдампи до преобразования в json. Вангую, что партнёр будет на месте
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:09 UTC

@jhaoda

$users = UserInspection::with('partner')->get();
        dd($users->last());

скрын

К сожалению, ванга уже спит наверное

fakefakefake12
@fakefakefake12
Jan 26 2017 22:09 UTC
@atehnix можно посчитать кол-во релейшенов к моделе. Метод getRelationExistenceCountQuery в Relation (верно же?)
JhaoDa
@jhaoda
Jan 26 2017 22:10 UTC
@fakefakefake12 в доке написано, как считать элементы в связи
@3gsxarakiri 146% в БД есть партнер с таким номером? Скрин показывай, а то чот не верю
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:11 UTC
@jhaoda не, и тут с процентами не прокатило. Какой именно скрин интересует?
ну я в плане, у меня нет дублей, в текущих таблицах
JhaoDa
@jhaoda
Jan 26 2017 22:12 UTC
@3gsxarakiri что не прокатило? Я спрашиваю — ты точно уверен, что в БД есть партнер с номером 440? На 146% уверен? Два раза проверил? Скрин из БД покажешь? Дальше разъяснять?
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:15 UTC

да с легкостью покажу:)

скрын UserInspection

скрын Partner

если бы у меня не было юзера, то до того как я удалил последнего юзера, тоже не было бы связи, а так она стабильно пропадает на каждом последнем партнере.

JhaoDa
@jhaoda
Jan 26 2017 22:17 UTC
@3gsxarakiri ок. Что дебагбар покажет в плане запросов?
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:19 UTC
@jhaoda не стоял на проекте, пару мин, сейчас поставлю
Andrei Sosnov
@atehnix
Jan 26 2017 22:21 UTC
@fakefakefake12 я тебе даже конкретный заголовок из доки выше привел, где написано как кол-во получить)
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:23 UTC
Andrei Sosnov
@atehnix
Jan 26 2017 22:23 UTC
@fakefakefake12 мог бы даже конкретную цитату примера из доки привести, но говорят, что это не педагогично.. :)
@3gsxarakiri читаю скрин бара - и думаю что сейчас посмотрю фотки какого то заведения.
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:24 UTC
@aios привлекаю внимание к вопросу ;)
JhaoDa
@jhaoda
Jan 26 2017 22:26 UTC
@3gsxarakiri я так понимаю, что у тебя есть юзеры 423 и 424 с партнерами 441 и 442? Они по иным условиям в выборку не попадают?
Короче, проблема всегда в последнем элементе коллекции, у него пустая связь?
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:28 UTC
Именно так
JhaoDa
@jhaoda
Jan 26 2017 22:28 UTC
@3gsxarakiri версия ларавел?
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:28 UTC
именно с последним элементом коллекции
@jhaoda 5.3.*
JhaoDa
@jhaoda
Jan 26 2017 22:30 UTC
@3gsxarakiri * это сколько?
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:31 UTC
@jhaoda 5.3.24
JhaoDa
@jhaoda
Jan 26 2017 22:33 UTC
@3gsxarakiri ну может баг какой? Обновиться не вариант?
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:34 UTC
@jhaoda сейчас обновлю, проверю)
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:45 UTC
@jhaoda обновился до последней, ситуация не изменилась, к сожалению :(
JhaoDa
@jhaoda
Jan 26 2017 22:46 UTC
@3gsxarakiri на других моделях со связями повторяется?
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:47 UTC
@jhaoda только начал работу над проектом и пока другого функционала и тем более моделей нет, увы. Только эта связка пока что
Arsen Soroka
@arsen-s
Jan 26 2017 22:51 UTC
@3gsxarakiri попробуй вытащить партнеров со связью user
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 22:55 UTC
@arsen-s о, не подумал даже. Но увы, точно такая же ситуация
@arsen-s ->first() идет со связью, ->last() - без
если надо могу скриншотами показать
Arsen Soroka
@arsen-s
Jan 26 2017 22:58 UTC
запости код моделей полностью
Роман Сохарев
@greabock
Jan 26 2017 22:59 UTC
только пастбин, пожалуйста, ради всех священных коров индии
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:02 UTC
Вот, думаю коровки будут счастливы)
Partner
UserInspection
Роман Сохарев
@greabock
Jan 26 2017 23:05 UTC
детектид
return $this->belongsTo(Partner::class, 'id');
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:05 UTC
а можно небольшие пояснения?
Роман Сохарев
@greabock
Jan 26 2017 23:07 UTC
а не...
хотя да
короче
это косяк
убирай id
грубо говоря, если бы это был join, то он выглядел бы как inspection.id = partner.id
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:11 UTC
а что с ним не так?:)
так или иначе, проблема не в нем, так как убрав, ситуация осталась на месте
Роман Сохарев
@greabock
Jan 26 2017 23:12 UTC
имена полей таблички inspections в студию
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:12 UTC
так данная табличка не участвует в запросах, с которыми возникает проблема
Роман Сохарев
@greabock
Jan 26 2017 23:14 UTC

@3gsxarakiri да ладно???

UserInspection::with('partner')->get();

а это я написал, что ли?

Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:14 UTC
ну просто у меня есть еще сама по себе таблица inspections, а тут указана userinspections вот я и не так понял)
все поля я внес в fillable и они уже есть в листингах выше
кроме timestamps
Роман Сохарев
@greabock
Jan 26 2017 23:15 UTC
@3gsxarakiri я не буду играть с тобой в угадайку
Arsen Soroka
@arsen-s
Jan 26 2017 23:16 UTC
@3gsxarakiri предлагаю залить на c9, только хз можно ли там разсшарить всем
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:17 UTC
да мне не трудно указать, просто отметил, что они есть выше
поля user_inspection = 'id','inspection_id', 'partner_id', 'status', 'disable_id', 'comment'
поля partner = 'id','uid', 'login', 'balance', 'hold', 'orders', 'approve', 'fail', 'done'
Arsen Soroka
@arsen-s
Jan 26 2017 23:21 UTC
@3gsxarakiri а возможно что ты смотришь в старую таблицу/базу?
Роман Сохарев
@greabock
Jan 26 2017 23:21 UTC
теперь, поясняю популярно
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:22 UTC
@arsen-s да не, это исключено, у меня 1 база, а таблицы я обновляю постоянно (удаляя старые), по мере внесения изменений. Поэтому эта инфа актуальная и дубликатов нет
Arsen Soroka
@arsen-s
Jan 26 2017 23:24 UTC
@3gsxarakiri тогда последние
dd(Partners::where('id', $id)->get());
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:24 UTC
их 424 штуки :-)
но я каждую ручками облазил и только в последнем элементе коллекции нет связи :(
@arsen-s могу сделать скриншот первого элемента и последнего, или предпоследнего и последнего или любого из 424 на выбор)
Роман Сохарев
@greabock
Jan 26 2017 23:28 UTC

есть допустим таблички ресторанов и пользователей, рестораны могут принадлежать пользователям.

restaurants
| id | user_id | title |
users
| uuid | name |

class Restaurant extends Eloquent {
   public function owner()
   {
        return $this->belongsTo(User::class, 'user_id', 'uuid');
   }
}

а теперь, смотря на мой пример, найди косяк здесь

return $this->belongsTo(Partner::class, 'id');
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:31 UTC

@greabock Благодарю за пример, но, думаю, если бы у меня была проблема с настройкой связи, то я бы вообще не получал их, но я получаю, но все кроме последнего.
дабы проверить теорию я внес изменение:

return $this->belongsTo(Partner::class, 'partner_id', 'id');

Ситуацию оно не решило, я все также получаю все, кроме последнего

Роман Сохарев
@greabock
Jan 26 2017 23:32 UTC
просто до этого, ты вообще не то получал и неизвестно как
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:33 UTC
@greabock да вроде я получал все что нужно было получать, по всем юзерам, кроме того юзера, который идет последним в списке. Он, по неведомой мне причине идет без связи
Роман Сохарев
@greabock
Jan 26 2017 23:34 UTC
@3gsxarakiri ты получал вот это userinspections.id = partners.id, не надо мне сказки рассказывать )
JhaoDa
@jhaoda
Jan 26 2017 23:35 UTC
@3gsxarakiri у тебя номера юзеров и партнеров почти идентичны
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:36 UTC
@jhaoda особенность таблички, так как она новая, со временем партнеры в юзеринспекций будут повторяться
JhaoDa
@jhaoda
Jan 26 2017 23:36 UTC
@3gsxarakiri так же, по скрину дебагбара видно, что ты выбирал все записи и последний юзер был без партнёра. А если первых 10 выбрать? Или с 20-го по 40-го?
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:37 UTC
@jhaoda сейчас проверю
Roman
@fearrr
Jan 26 2017 23:37 UTC
@jhaoda а это не касается ларки?
JhaoDa
@jhaoda
Jan 26 2017 23:37 UTC
@fearrr нет
Roman
@fearrr
Jan 26 2017 23:38 UTC
@jhaoda Ок
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:38 UTC

@jhaoda

$users = UserInspection::with('partner')->get()->take(10)->toJson();

работает превосходно, все они приходят с полными данными.

Roman
@fearrr
Jan 26 2017 23:38 UTC
Вероятность ответа там ~= 0
JhaoDa
@jhaoda
Jan 26 2017 23:39 UTC
@3gsxarakiri вывод? Дело совсем не коллекции и её последнем элементе
@3gsxarakiri отсортируй в обратном порядке и выбери первую десятку. Первая запись должна быть без партнёра
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:43 UTC

@jhaoda

$users = UserInspection::with('partner')->orderBy('id', 'desc')->get()->take(10)->toJson();

Отработало идеально, так что последняя запись, в данном случае является первой и приходит корректно.

JhaoDa
@jhaoda
Jan 26 2017 23:43 UTC
@3gsxarakiri точно она?
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:43 UTC
@jhaoda точно
JhaoDa
@jhaoda
Jan 26 2017 23:43 UTC
@3gsxarakiri юзер 442?
@3gsxarakiri а если с этой обратной сортировкой всё выбрать, то последняя запись с партнёром?
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:44 UTC
@jhaoda именно
@jhaoda да, если отсортировать, то все работает хорошо
только вот почему так? о__О
Роман Сохарев
@greabock
Jan 26 2017 23:45 UTC
не работает оно хорошо
точнее работает
потому, что и до этого работало
@3gsxarakiri короче, инспектируй свои таблички теперь внимательно, и осознай, что у этих твоих "сломанных" юзер-инспекций нет на самом деле партнеров.
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:47 UTC
@greabock если что, я удалил предложенные тобой изменения. Вернув к тому что было. Так что проблему решило именно "перевертывание", а не внесение изменений в модельки
@greabock у меня не могут быть созданы юзер-инспекции без партнеров, а для каждой юзер-инспекции партнер уникален и повторяться не имеет права
Роман Сохарев
@greabock
Jan 26 2017 23:47 UTC

если что, я удалил предложенные тобой изменения

я сворачиваюсь

Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:48 UTC
@jhaoda спасибо, что подвел меня к решению проблемы! Но все также непонятно, почему коллекция или query билдер, себя так странно ведет
@jhaoda спасибо!
JhaoDa
@jhaoda
Jan 26 2017 23:49 UTC
@3gsxarakiri ты первый, кто на это жалуется
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:49 UTC
а бот спит... ну ладно
JhaoDa
@jhaoda
Jan 26 2017 23:51 UTC
@3gsxarakiri все эти таблицы в одной БД? Или схеме, если это pg?
Vadim Milevskiy
@3gsxarakiri
Jan 26 2017 23:51 UTC
@jhaoda ага, в одной, mysql
Роман Сохарев
@greabock
Jan 26 2017 23:53 UTC
@jhaoda имхо, тут проблема только в прокладке