Size: a a a

2020 May 01

EG

Egor Gruzdev in Laravel Pro
Egor Gruzdev
тогда пока до пары 2кк не доберешься нет смысла оптимизировать.
используй createOrUpdate
источник

С

Станислав in Laravel Pro
Egor Gruzdev
используй createOrUpdate
так оно же не поможет сократить количество запросов к БД, смысл от него?
источник

V

Vitaly in Laravel Pro
Станислав
так оно же не поможет сократить количество запросов к БД, смысл от него?
интересно что Вы хотите сократить если Вы в любой случае добавляете / обновляете все 10000 записей
источник

С

Станислав in Laravel Pro
Egor Gruzdev
используй createOrUpdate
А, ну, понял, где он сократит
источник

EG

Egor Gruzdev in Laravel Pro
Станислав
А, ну, понял, где он сократит
только метод updateOrCreate, а сократит он на записи если данные не отличаются от тех что есть в базе.
источник

un

user name in Laravel Pro
Станислав
Добрый вечер. Есть такой вопрос: есть сервис, получающий данные по апи, каждый запрос выдает около ~10000 строк. Эти строки нужно сохранить в БД. При этом, необходимо проверить, есть ли строка с таким ID в базе, и если она существует, то обновить ее, если нет, то создать новую. Необходимо оптимизировать запрос к БД, т.к. сейчас это сделано через Model::findOrNew() и Model->save(). Это очень сильно жрет ресурсы по БД. По поводу добавления, все ок, можно воспользоваться методом Model::insert(), а что можно сделать с апдейтом строк? Никто не сталкивался? Не могу найти инфы, как это более грамотно реализовать. Спасибо.
я в таких ситуация использую старые добрые prepared statement. Количество запросов не изменится, но они будут явно быстрее
источник

un

user name in Laravel Pro
Всем привет! Поделитесь своим опытом работы с авторизации с действиями через Policy или Gate. Ситуация такая: есть функционал создания пользователя
В контролле UserCOntroller в методе store я вызываю

$this->authorize('create', new User);

данный метод отправляет меня в UserPolicy@create, где я проверяю полномочия пользователя на создание других пользователей.

Здесь пока все ок. Но появляются сложности. При создании пользователя, у создаваемого пользователя есть поле "project", в котором я должен указать ID проекта, к которому создаваемый пользователь относится

НО! я должен иметь возможность проверить а есть ли собственно доступ к указанному проекту у пользователя, который создает

Таким образом получается, что мне нужно в UserPolicy иметь доступ к полю "project"

а теперь еще представим, что параметр "project" не единственный такой параметр, который мне нужно проверить на доступ.

Что вы делаете в такой ситуации? Писать проверки в контроллере бред, для того и нужны политики
источник

EG

Egor Gruzdev in Laravel Pro
user name
я в таких ситуация использую старые добрые prepared statement. Количество запросов не изменится, но они будут явно быстрее
can('create-user-in-project', $project)
источник

un

user name in Laravel Pro
Egor Gruzdev
can('create-user-in-project', $project)
и тогда вызовется GATE, правильно?
источник

EG

Egor Gruzdev in Laravel Pro
user name
и тогда вызовется GATE, правильно?
да gate + ProjectPolicy@createUserInProject
источник

EG

Egor Gruzdev in Laravel Pro
в коде получится две проверки:
if(can('create', 'App\User') && can('create-user-in-project', $project))  {
  /// создаем пользователя
}
источник

un

user name in Laravel Pro
окей, тогда если поле PROJECTS - множественное? получается множественно проверить?
источник

un

user name in Laravel Pro
if ( (canCreateUser) && (canInProject1) && (canInProject2) ...)
источник

EG

Egor Gruzdev in Laravel Pro
user name
окей, тогда если поле PROJECTS - множественное? получается множественно проверить?
тогда через ability, can('create-user-in-projects', $projects) , а вот там уже в зависимости от логики приложения, например пройтись циклом can('create-user-in-project', $project)
источник

un

user name in Laravel Pro
Egor Gruzdev
тогда через ability, can('create-user-in-projects', $projects) , а вот там уже в зависимости от логики приложения, например пройтись циклом can('create-user-in-project', $project)
Спасибо 😎
источник

MR

Maksat Ramazan in Laravel Pro
доброго времени суток, подскажите как можно создавать директорию внутри диска с айдишником записи в базе и класть туда файлы касательно этой записи, в конфиге файлсистемс я уже создал диск, теперь мне нужно чтобы программно там создавались директории с содержимым
источник

k

kaktus778 in Laravel Pro
Maksat Ramazan
доброго времени суток, подскажите как можно создавать директорию внутри диска с айдишником записи в базе и класть туда файлы касательно этой записи, в конфиге файлсистемс я уже создал диск, теперь мне нужно чтобы программно там создавались директории с содержимым
источник

MR

Maksat Ramazan in Laravel Pro
вы не правильно поняли меня, у меня есть диск уже общая папка так сказать, а вот дальше реквесты должны соответственно записям в базе ложиться в нужную директорию в этой папке
источник

MR

Maksat Ramazan in Laravel Pro
я не могу этого добиться
источник

EG

Egor Gruzdev in Laravel Pro
Maksat Ramazan
я не могу этого добиться
а как ты этого добиваешься, код приложи
источник