
Timur
19.06.2018
06:25:45
?

Илья
19.06.2018
06:25:59
по всем канонам нормализации

Dmitriy
19.06.2018
06:26:08
вроде такого

Google

Timur
19.06.2018
06:26:08
Теоретическое извращения тут нет смысла обсуждать

Илья
19.06.2018
06:26:40

Dmitriy
19.06.2018
06:28:09
Как с вами тяжело...

Илья
19.06.2018
06:32:48
Как с вами тяжело...
Потому что ты начал речь о "теоретических извращениях", а ссылки кидал на информацию про нормализацию

Dmitriy
19.06.2018
06:33:51
на теоретических извращениях я вроде закончил
или нет ?

Илья
19.06.2018
06:36:17
или нет ?
окей, вернёмся к вопросу
есть пользователи (name, email, status), если роли (name, description)
как уместить в 2 таблицы?

Dmitriy
19.06.2018
06:36:57
Выше уже написали

Илья
19.06.2018
06:37:26

Daniel
19.06.2018
06:42:47


Stanislav
19.06.2018
06:43:47
В общем виде есть такие модели (структура передана в сути):
`
/
* Structure: id | transaction_id | code
*/
class SmsConfirmation extends Model
{
public function transaction()
{
return $this->belongsTo(Transaction::class, 'transaction_id', 'id');
}
}
/
* Structure: id | wallet_from | wallet_to
*/
class Transaction extends Model
{
public function wallet()
{
return $this->belongsTo(Wallet::class, 'wallet_from', 'id');
}
public function smsConfirmation()
{
return $this->hasMany(SmsConfirmation::class, 'transaction_id', 'id');
}
}
/**
* Structure: id | phone
*/
class Wallet extends Model
{
public function transactions()
{
return $this->hasMany(Transaction::class, 'wallet_from', 'id');
}
}
`
Пытаюсь вызвать SmsConfirmation::first()->transaction->wallet->phone; , получаю: "message": "Trying to get property 'phone' of non-object",
В чем может быть проблема?


Alexandr
19.06.2018
06:43:52
что мы выиграем еслии уберем 3-ю таблицу? бессмысленное обсуждение. тогда на монго переходите

Илья
19.06.2018
06:44:01

Google

Daniel
19.06.2018
06:44:10

Илья
19.06.2018
06:45:04

Daniel
19.06.2018
06:45:30
А я ссылку на что скинул?)
A "one-to-many" relationship is used to define relationships where a single model owns any amount of other models.

Maksim (Ellrion)
19.06.2018
06:45:55
Не дай бог с таким на проекте встретиться)

Илья
19.06.2018
06:45:56

Daniel
19.06.2018
06:46:16
Перевожу - одна модель имеет связь с множеством других моделей.
Собственно отношение так и называется - Один ко многим

Илья
19.06.2018
06:47:58
Где тут один ко многим?

Daniel
19.06.2018
06:51:02
Что мешает прикрутить третью таблицу и не парить себе мозг?

Maksim (Ellrion)
19.06.2018
06:52:30
Я могу сколько угодно ролей назначить
А ещё ты можешь проебаться из за ограничения по длине; ещё искать пользователей с ролью определенной ты будешь через неэффективный лайк. А если нужно сразу с двумя ролями то вообще туши свет. А ещё ты пошлешь нафиг стондартный релейшен лары и все его возможности.

Илья
19.06.2018
06:55:55

M
19.06.2018
06:58:17
Они наоборот для нормализации и придуманы
Даже в моей шараге такие основы проектирования СУБД были
И как вообще м:м сделать без пивот если array типа нету в СУБД? Лол

Илья
19.06.2018
07:00:33

Maksim (Ellrion)
19.06.2018
07:02:47

Google

Илья
19.06.2018
07:03:25
?

Daniel
19.06.2018
07:03:35
можно дико извратиться с json колонками :D

Илья
19.06.2018
07:03:36
локально, но поймёшь

Daniel
19.06.2018
07:03:54
бесконечно длинными для role

Maksim (Ellrion)
19.06.2018
07:05:26
Я кстати ещё понял бы если бы таблицу ролей вообще не делали и колонка была джейсон

Nik
19.06.2018
07:06:09


Stanislav
19.06.2018
07:13:13
Народ, нид хелп ))) не работает, и не понятно, почему
В общем виде есть такие модели (структура передана в сути):
/**
* Structure: id | transaction_id | code
*/
class SmsConfirmation extends Model
{
public function transaction()
{
return $this->belongsTo(Transaction::class, 'transaction_id', 'id');
}
}
/**
* Structure: id | wallet_from | wallet_to
*/
class Transaction extends Model
{
public function wallet()
{
return $this->belongsTo(Wallet::class, 'wallet_from', 'id');
}
public function smsConfirmation()
{
return $this->hasMany(SmsConfirmation::class, 'transaction_id', 'id');
}
}
/**
* Structure: id | phone
*/
class Wallet extends Model
{
public function transactions()
{
return $this->hasMany(Transaction::class, 'wallet_from', 'id');
}
}
Пытаюсь вызвать SmsConfirmation::first()->transaction->wallet->phone; , получаю: "message": "Trying to get property 'phone' of non-object",
В чем может быть проблема?

Dmitry
19.06.2018
07:13:45
wallet не находит

Stanislav
19.06.2018
07:15:04

Dmitry
19.06.2018
07:15:15
пожалуйста

Илья
19.06.2018
07:19:41
С которой началась дискуссия

M
19.06.2018
07:20:33
Все извращения с делиметерами и жсон не дадут контроля целостности, шах и мат

Oles
19.06.2018
09:26:54
Ребят,вот только начал изучать лару
Хотел спросить,
Примерно вот так выглядят роутеры в больших проектах
ну + групирование и всё такое
Я верно понял ?

Oleg
19.06.2018
09:27:40
Ещё алиасы, мидлвари
Ресурсные роуты и тд

Gleb
19.06.2018
09:27:49
У всех по разному

Oleg
19.06.2018
09:28:12
И роутов с клоужер вряд-ли найдешь в нормальном проекте

Google

Oles
19.06.2018
09:28:38

Gleb
19.06.2018
09:29:10
У меня бывало, что на одну сущность по 20 ростов было. Поэтому я делал в парке routes ещё папку, в которой описывал маршруты к сущностям

Oles
19.06.2018
09:29:10
а можеш показать ,примерно ,кар выглядит роутер у среднего проекта,если это не топ сикрет)))

Maksim (Ellrion)
19.06.2018
09:36:35

Liv
19.06.2018
09:41:21
всем привет, нид хелп. Есть такая странная структура: блог, у которого есть текстовые статьи и фотостатьи. Для текстовых статей сделана модель, в ней есть несколько scope методов. Фотостатьи хранятся в той же таблице, что и текстовые статьи, но отличаются значением поля type. Я отнаследовал модель фотостатей от текстовых статей, но столкнулся с рядом проблем. Например, в модели текстовых статей был scope-метод, возвращающий кол-во активных статей. После унаследования от этой модели фотостатей данный scope-метод, в случае отсутствия активных фотостатей, возвращает не 0, как должен, а пустой объект Builder. Может кто-то помочь с проблемой?


Maksim (Ellrion)
19.06.2018
09:43:05
всем привет, нид хелп. Есть такая странная структура: блог, у которого есть текстовые статьи и фотостатьи. Для текстовых статей сделана модель, в ней есть несколько scope методов. Фотостатьи хранятся в той же таблице, что и текстовые статьи, но отличаются значением поля type. Я отнаследовал модель фотостатей от текстовых статей, но столкнулся с рядом проблем. Например, в модели текстовых статей был scope-метод, возвращающий кол-во активных статей. После унаследования от этой модели фотостатей данный scope-метод, в случае отсутствия активных фотостатей, возвращает не 0, как должен, а пустой объект Builder. Может кто-то помочь с проблемой?
покажи код самого скоупа

Liv
19.06.2018
09:43:46
все scope - локальные

Maksim (Ellrion)
19.06.2018
09:44:53
как вызываешь у фотостатьи?
и версия лары

Liv
19.06.2018
09:45:34
Laravel 5.4
App\Models\PhotoNews::getActiveNewsCount()

Maksim (Ellrion)
19.06.2018
09:46:40
ремарка по неймингу, зачем у тебя в имени скоупа News да и get лишний.
а вот по вопросу странно не должен бы билдер быть.

Liv
19.06.2018
09:47:18
сек, наскриню

dev
19.06.2018
09:53:09
скоуп не должен возвращать число же в том или ином виде
если тебе надо кол-во юзай скоуп+каунт
scopeActiveNews($q){return $q->where('active', 1);}
..
PhotoNews...->activeNews()->count();

Maksim (Ellrion)
19.06.2018
09:56:42
ну да скоупы не предназначены идейно для концевых методов.
но интересно то что они не предназначены и по коду)
всё из-за строки https://github.com/illuminate/database/blob/master/Eloquent/Builder.php#L989

Liv
19.06.2018
10:09:24
хм, любопытно. А можно чуть подробней идею раскрыть, для чего локальные скоупы нужны, а то я, видимо, не совсем правильно их использовал.
З.Ы. проблему решил, добавив в родительскую модель статический метод для определения кол-ва активных static

Google

dev
19.06.2018
10:10:45
например популярная новость. ты ее в скопе пишешь и вызываешь где надо получить популярное
рано или поздно вдруг критерии популярности поменяется - ты в одном месте поменял и ок
вместо кучи мест where всякие править

Nik
19.06.2018
10:13:30

Liv
19.06.2018
10:16:25
ок, спасибо, будем переосмыслять

F01134H
19.06.2018
10:41:56
https://medium.com/@kapivanov93/laravel-service-repository-architecture-4a04777967fd
кто-нибудь мне скажет, в чем смысл
Хотя, в целом, неплохо

Daniel
19.06.2018
10:47:25
у кого-нибудь был опыт обновления Carbon до самой последней версии в laravel 5.6?

Nik
19.06.2018
10:48:24
зачем?

Daniel
19.06.2018
10:49:59
хочу CarbonPeriod

Nik
19.06.2018
10:54:08
@ellrion внезапно, тебя выдало на 2-м месте

Liv
19.06.2018
11:03:50
еще вопрос вдогонку про наследование моделей: если моя PhotoNews наследуется от News, то при создании инстанса PhotoNews я хочу, чтобы у него конкретное поле уже было заполнено нужным значением (type_id = 2), чтобы при сохранении инстанса PhotoNews сохранялись все-таки данные как о фотостатье, а не о текстовой статье (News). Как это правильно делается? Я понимаю, что можно переопределить метод save() или конструктор модели PhotoNews, но какой более правильный подход?

Nik
19.06.2018
11:05:14
он задаст дефолтные значения, дальше сам дурак

Maksim (Ellrion)
19.06.2018
11:10:16

Liv
19.06.2018
11:11:19

Виктор
19.06.2018
11:16:12
Кто-нибудь знает, где физически хранится токен паспорта? Bearer + token. В базе найти не могу

Nik
19.06.2018
11:16:30

Виктор
19.06.2018
11:16:40