
Aleh
05.04.2017
13:46:10
чет ваще вопрос не понял

Sergey
05.04.2017
13:46:28
типа workflow?

Alexander
05.04.2017
13:46:36
угу

Sergey
05.04.2017
13:46:47
http://symfony.com/blog/new-in-symfony-3-2-workflow-component

Google

Sergey
05.04.2017
13:46:50
вот тут подсмотри

Alexander
05.04.2017
13:48:01
чет ваще вопрос не понял
Тебе приходит запрос, ты сопостовляешь, видишь, что он правильно составлян, нажимаешь approve. Твой коллега анализирует его, бьет на задачки, следущий проверяет разбиение, нажимает decline

Roman
05.04.2017
13:49:48
willReturn у prophecy может вернуть одно из значений?

Alexander
05.04.2017
13:50:19

Roman
05.04.2017
13:51:26
а что мне в этой функции проверять?
Argument::that(callback) - вот я делаю проверку внутри этой callback функции

Yura
05.04.2017
13:54:12
тип проверить
значения

Roman
05.04.2017
13:54:29
возвращаю true or false и внутри у переменной булевого типа меняю значение в соответствии с условием

Yura
05.04.2017
13:55:13
?

Roman
05.04.2017
13:58:00
ну типа простое условие проверки аргумента и если это условие не проходит, то я переменной $check выставляю false

Yura
05.04.2017
13:58:52
нет

Google

Roman
05.04.2017
13:58:52
помимо гитхаба, где еще есть наиболее подробные доки по prophecy?

Aleh
05.04.2017
13:58:55
Argument::that(function($arg) { return $arg instanceof User; })

Yura
05.04.2017
13:59:02
просто callback возвращает true или false

Roman
05.04.2017
14:01:18
$mockObject->method->(
Argument::that(function(\Class $arg) { return true or false; })
)->willReturn(new ClassName)

Yura
05.04.2017
14:01:50
что-то у тебя не так)

Roman
05.04.2017
14:02:04
$mockObject->method(
Argument::that(function(\Class $arg) { return true or false; })
)->willReturn(function(){
if()
})

Yura
05.04.2017
14:02:22
method->(
что это такое?

Roman
05.04.2017
14:02:45
метод у объекта который мокаю

Yura
05.04.2017
14:03:03
стоп, ты хочешь указать что он вернёт
или проверить
?

Roman
05.04.2017
14:03:47
внутри that я проверку сделал, но если эта проверка вернет false, тест обвалится на этом
мне после этой проверки нужно еще проверку сделать
поэтому думал флаг какой то использовать
и в willReturn() написать, что может вернуться либо объект класса либо false

Yura
05.04.2017
14:04:39
ты хочешь проверить
или сделать stub

Roman
05.04.2017
14:04:50
но в любом случае нужно продолжить выполнение теста

Yura
05.04.2017
14:04:50
с определённым поведением

Google

Roman
05.04.2017
14:04:52
а не падать
с определенным поведением

Yura
05.04.2017
14:05:53
в willReturn нужно передать определённые значения
а не Argument::that
$user->isPremium()->willReturn(true);

Roman
05.04.2017
14:07:30
не понял
Argument::which() - мб это подойдет?

Yura
05.04.2017
14:08:13
ты не читаешь что я пишу(

Roman
05.04.2017
14:08:30
я прочитал, но возможно что то не так понял

Yura
05.04.2017
14:09:30
смотри
при помощи willReturn ты заставляешь свой stub/mock вести себя определённым образом
указываешь что должны возвращать его методы при вызовах

Yura
05.04.2017
14:11:32
если ты хочешь проверить что какой-то метод какого-то объекта был вызван с какими-то параметрами, то ты должен действовать по-другому
$user->isPremium(Argument::any())->shouldBeCalled();
или если ты проверяешь после взаимодействия
то
$user->isPremium(Argument::any())->shouldHaveBeenCalled();
тут ты указываешь под какой шаблон должны подходить параметры с которыми был вызван метод

Roman
05.04.2017
14:13:34
ага, понял, щас попробую

Yura
05.04.2017
14:14:53
https://github.com/phpspec/prophecy

Google

Yura
05.04.2017
14:15:06
в readme там много и понятно
:)

Roman
05.04.2017
14:34:50
Я там и читал)
Не все понятно так как на англ
в общем сделал так, как хотел)

0x9d8e
05.04.2017
18:03:31
Хм. Подскажите со структурой базы. Есть, допустим, таблица с категориями. К каждой категории можно прикрепить сколько угодно других (добавить в рекомендуемые), при этом железно выполняется условие, что когда мы добавляем А в Б, то добавляем и Б в А.
Почему-то не делал никогда многие-ко-многим внутри одной таблицы, всегда с другими. Там это делалось таблицей вида [foo_id | bar_id] (и всё вместе pk). Но тут на ум приходит только две записи в такую таблицу сразу вставлять, что вообще не айс. Ну или [first_id | second_id] и во всех запросах table.id = relation.first_id or table.id = relation.second_id, что тоже как-то лажово.

dypa
05.04.2017
18:05:01
many to many подразумевает двунаправленную связь

0x9d8e
05.04.2017
18:06:22

Admin
ERROR: S client not available

0x9d8e
05.04.2017
18:07:37
Чтобы делая связь А-Б получить также и связь Б-А.
Просто когда это две разные таблицы, то всё просто: пилим третью таблицу на две колонки firsttable_id | secondtable_id и делаем составной пк на эти два поля

finkel
05.04.2017
18:09:06
зачем 2 записи то?
в чем разница?

0x9d8e
05.04.2017
18:10:31
зачем 2 записи то?
Как в чём? Колонки две. А из какой брать... не важно. Выходит или записи дублировать или условия всюду лепить.
Потому как не должно быть никакой разницы получаю я категории, прикреплённые к текущей или категории, к которым она прикреплена. Не должно быть даже возможности это определить. Связаны и всё.
Во, понял как описать лучше.
Обычно связь многие ко многим подразумевает, что множественным записям одной таблицы соответстуют множественные записи другой.
А мне надо это сделать между записями одной таблицы и, главное, симметрично. Без всяких first_id, second_id.

finkel
05.04.2017
18:23:08

Михаил
05.04.2017
18:31:17
ну ты по сути хочешь граф сделать, с ненаправленными ребрами
у тебя только два варианта как это сделать
1) писать в табличку from_id = 1, to_id = 2, затем при выборке всегда писать where from_id = :ID or to_id = :ID
2) писать в табличку при добавлении ребра всегда пару: (from_id = 1, to_id = 2), (from_id = 2, to_id = 1)
я бы выбрал второй способ, т.к. с ним проще делать джоины, особенно если ты используешь orm

Google

Михаил
05.04.2017
18:33:44
просто потом при удалении надо всегда оба удалять

0x9d8e
05.04.2017
18:34:14
Может быть как-то триггерами в базе запилить вставку/удаление второй записи.

finkel
05.04.2017
18:36:07

Yura
05.04.2017
18:45:50

dypa
05.04.2017
18:54:18

Yura
05.04.2017
18:55:16
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#many-to-many-unidirectional
можно ещё Эванса почитать, на странице 90

dypa
06.04.2017
08:13:04
@YuraLukashik человек спрашивал про структуру базы => я ожидал ответ в рамках теории субд, а не в рамках обьектной модели

Yura
06.04.2017
09:50:03

$iD
06.04.2017
09:52:05
https://medium.com/@fabpot/symfony-4-monolith-vs-micro-52dc6b98c0c5
что нас (кто юзает симфонЮ) ждёт

?
06.04.2017
10:47:07
https://www.youtube.com/watch?v=fuRoh5v-0EQ

dypa
06.04.2017
13:32:23

Yura
06.04.2017
13:32:41
:)

Artur
06.04.2017
23:25:37
люди. Что лучше ? having или подзапрос?

da horsie
06.04.2017
23:27:40
лучше пивка холодного

Artur
06.04.2017
23:28:23
кумыс лучше

Pavel
07.04.2017
07:18:28
Юзаю денормолайзер симфони в сайлексе. Обьект без методов, все на публичных свойствах. Передаю валидный массив. В любом случае выдается ошибка "Could not denormalize object of type AccountBundle\\Entity\\Account\\Account, no supporting normalizer found.". ObjectNormalizer подключаю
Уже второй день ломаю голову
Класс на геттерах/сеттерах нормализуется без проблем

$iD
07.04.2017
07:24:29
http://symfony.com/doc/current/components/serializer.html#converting-property-names-when-serializing-and-deserializing