Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#26 Re: Laravel 5.x » роли юзера в layout.blade.php » 31.08.2017 10:05:09

Как по мне так для таких целей лучше использовать посредника. Или я чего-то не знаю ?

#27 Re: Laravel 5.x » Переменная в контроллере » 30.08.2017 02:43:36

Если я вас правильно понял то так


use View;
...

public function __construct($id = null)
{
   View::share('foo', $bar);
}

#28 Laravel 5.x » Полиморфные связи и БД » 29.08.2017 14:48:03

MeKree
Ответов: 1

Представим 3 таблицы

articles (id, slug)
news(id, slug)
langs(id, lang_id, entity_id, entity_type)

Связь у них morphMany с langs. Как можно добавить каскадное удаление для articles и для news одновременно ? Спасибо заранее!

#29 Laravel 5.x » Как правильно построить структуру БД ? » 27.08.2017 17:54:24

MeKree
Ответов: 0

Нужно создать страницу контактов (с управлением из админки) в которой
1. Будет форма для отправки сообщений с дропдауном из емайл адресов.
2. Будет список контактов разделенный отделы компании такого формата
-> (к примеру) | Приемная (номер, номер, емайл), Отдел кадров (номер, емайл), бухгалтерия (номер, номер, номер).
Данные могут меняться, к примеру в приемной (номер, емайл, емайл).
3. Табы районов одного города в которой так же несколько значений
-> (к примеру). Центр города (Отдел1-(номер, номер), отдел2-(номер), Отдел3-(номер, номер, номер)).
Номера в 3-м пункте не повторяются , и не связаны с данными из пункта но. 2.

Как бы вы решили данную задачу? Спасибо за идеи заранее.

#30 Re: Laravel 5.x » Каскадное удаление средствами Laravel » 27.08.2017 15:54:50

И это самое лучшее решение. Если есть возможность переложить работу с PHP-кода на БД, то это всегда нужно делать, так как это проще и надежнее.

Почитав документации, пришел к такому же выводу. Спасибо ещё раз.

#31 Laravel 5.x » Вопрос про отношения » 27.08.2017 13:22:25

MeKree
Ответов: 7

Доброго времени суток.
Скажите пожалуйста, как в laravel, грамотно организовать отношения в ОДНОЙ таблице.
Если было бы сделано в двух таблицах то это выглядело бы так.

Contacts (id, name_en, name_ru) ->hasMany(Contact_lists)
Conctact_lists (id, contact_id, type(enum(email,phone))

Но как это реализовать в одной и той же таблице?
Спасибо.

#32 Re: Laravel 5.x » Каскадное удаление средствами Laravel » 27.08.2017 00:19:52

Спасибо большое за ответ. Все таки для решения данной задачи решил использовать foreign.

#33 Laravel 5.x » Каскадное удаление средствами Laravel » 26.08.2017 18:50:34

MeKree
Ответов: 4

Есть 4 таблицы

 
1. Categories (id, slug) 
->hasMany(category_langs)
->hasMany(articles)

2. Category_langs (id, category_id, lang_id, title)
->belongsTo(categories)

3. Articles (id, category_id, image, slug)
->belongsTo(categories)
->hasMany(article_langs)

4. Article_langs (id, article_id, lang_id, title, content)
->belongsTo(articles)

Задача -> при удалении категорий удалить article->langs(), articles(), category_langs(), category. при этом еще сделать грамотный unlink для изображений в articles.

Как это можно сделать при таком раскладе, или как поменять реляции что бы воплотить данный функционал ТОЛЬКО средствами Laravel, без создания реляций по ключу в самой ДБ !? Заранее спасибо !

#35 Laravel 5.x » Добавить функцию в Eloquent Model » 23.08.2017 20:47:46

MeKree
Ответов: 3

Доброго времени суток. Такой вопрос. Есть метод uploadImage() которая вызывается из разных конроллеров, на данный момент данная функция повторяется в каждой модели News, Pages ...., хочется как то расширить Eloquent Model что бы добавить функцию один раз, и что бы небыло нужды повторять его в каждой модели. При этом это надо сделать так что бы не зализать в папочку vendor. Буду благодарен за помощь!

#36 Laravel 5.x » Помогите пожалуйста » 14.08.2017 20:37:53

MeKree
Ответов: 1

Доброго времени суток. Пытаюсь залить Laravel (5.4) проект на хостинг. В итоге получаю 500 HTTP Error.
Проверял уже все что возможно. С правами точно проблем нет, даже при 777 НА ВСЕ выдает тот же 500. Логи молчат, доступа к apache log нету, и доступ даже не собираются давать (саппорт молчит). Уже не знаю что делать. На локалхосте все работает. Подскажите может кто сталкивался. Хоть скажите куда копать. Спасибо заранее.

#37 Re: Laravel 5.x » foreach » 26.07.2017 00:04:38

если $articles - это коллекция моделей элоквент:

Спасибо большое за вмешательство но думаю вы не поняли суть вопроса.

Решил так

if(App::getLocale()=="ru"){
  foreach($articles as $key=>$article){
    $article["title"] = $article->title_ru;
    $articles[$key]=$article;
    unset($key,$article);
  }
}

Можете закрывать!

#38 Laravel 5.x » foreach » 25.07.2017 18:06:53

MeKree
Ответов: 3

Добрый день. Проблема такая. Есть таблица articles у которой приблизительная структура такая:

$table->string('title_ru');
$table->string('title_en')->nullable();
$table->text('content_ru');
$table->text('content_en')->nullable();
$table->..... 

Не кидайтесь на меня я знаю что такое решение мало назвать костыльным, но суть вот в чем ->
В переменной $articles я храню все посты. Мне нужно в контроллере прочекать текущий язык и вывести в статью соответствующий title и content.

Чекать и менять язык на соответствующий я собрался так

if (App::getLocale() == 'ru')
{
   foreach($articles as $article)
   {
     $article['title'] = $article->title_ru;
   }
}

Все замечательно, только вот как сохранить данные изменения обратно в переменную $articles что бы передать во view и распарсить там тем же @foreach !? Заранее благодарю.

#39 Re: Laravel 5.x » Связать уникальные данные » 10.03.2017 15:25:27

constb пишет:

Задача такова что нужно вернуть текст ошибки пользователю если у article_id (к примеру 1) уже существует invoice с мылом example@mail.com а пользователь именно его пытается добавить. Такое решение выполнит данную задачу ?

да, будет \PDOException – лови его и может даже проверить по подстроке в $exception->getMessage(), типа

if (strstr(strtolower($e->getMessage()), 'duplicate entry')) { /* попытка купить уже купленную статью */ }

Все работает, спасибо большое !

#40 Re: Laravel 5.x » Связать уникальные данные » 09.03.2017 12:26:38

constb пишет:

ну здесь не только в миграциях дело, надо бы и mysql знать. вообще просто, если через миграции – что-то типа

$table->unique(['article_id', 'email']);

ps. или наоборот – ['email', 'article_id']. такой индекс может использоваться в выборках только по первому полю или по обоим. но не может – только по второму. если выбираешь часто все покупки по email – второй вариант, если «все, кто купил такую-то статью» – первый

А как "unique" со вторым параметром работает в данном случае ?
Задача такова что нужно вернуть текст ошибки пользователю если у article_id (к примеру 1) уже существует invoice с мылом example@mail.com а пользователь именно его пытается добавить. Такое решение выполнит данную задачу ?

Спасибо за помощь !!!!

#41 Re: Laravel 5.x » Связать уникальные данные » 09.03.2017 12:15:19

constb пишет:

не вижу в invoices поля user_id. вообще получается что пользователи и articles связаны отношениями многие-ко-многим, а invoices - пивот-таблица с набором доп. свойств и полями article_id, user_id, ... очевидно что если на связи индекс по [user_id, article_id] объявить как уникальный, то на уровне СУБД добавляемые связи пользователей на статьи будут проверяться на уникальность и попытка добавления связи которая уже существует будет вызывать \PDOException. больше похоже на то что нужно?

не вижу смысла делать belongsToMany здесь.

constb пишет:

в принципе даже если invoices используется не как пивот а как обычная сущность – всё равно на ней есть article_id и user_id и по ним всё равно можно сделать уникальный индекс.

Я в место user_id хочу использовать email т.к добавлять invoice могут как зарегистрированные пользователи так и обычные гости сайта у которых естественно нет user_id. Вопрос в том как именно этот уникальный индекс сделать ?! Я просто не полностью освоил миграции !

#43 Laravel 5.x » Связать уникальные данные » 08.03.2017 13:31:34

MeKree
Ответов: 8

Есть таблица articles (id, title, content,........) и таблица invoices (id, article_id,email,price,......)

Как сделать уникальную связку между article_id и email в таблице invoices ? Смысл в том, что бы один пользователь мог добавить только одну заявку на один article. То бишь пользователь с мылом example@mail.com мог кинуть заявку на article 1, 2, 3, 4, только по одному разу на каждый !? Спасибо

#44 Re: Laravel 5.x » Вызвать функцию контроллера средствами JavaScript » 06.03.2017 19:09:23

DBR пишет:

А что в логе написано?

Лог laravel вообще молчит.
Если подключить token в data , консоль говорит 500, если в headers говорит success но при этом сама функция не вызывается

#45 Re: Laravel 5.x » Вызвать функцию контроллера средствами JavaScript » 06.03.2017 16:00:17

Dens пишет:

Хммм, у меня почти все проекты с ajax и никогда не было проблем, использую пока laravel 5.3
давайте тогда в студи код js, код html и желательно текст ошибки, до кучи ...
ну а если вы на какой ни будет тестовый сервер повесите это всё дело, где можно пощупать, было бы отлично

Хорошо, тестовый сервер попробую найти и функция js скину сюда позже т.к сейчас в дороге

#46 Re: Laravel 5.x » Вызвать функцию контроллера средствами JavaScript » 06.03.2017 15:49:29

Dens пишет:

Я уже устал писать всем одно и тоже, может мне вынести это в отдельную статью
почему у людей не получается отправлять ajax запросы
потому что нужно посылать прицепом со всеми данными значение токе

 ... '_token':$('#_token').val() ...

и вписывать соответствующий тег на странице

Я вас прекрасно понимаю, и с радостью сообщаю что присутствие hidden input-a с токеном который отправляется в data выдает тот же 500 Internal Server Error.
Пробовал и в headers его запихать. Ноль на массу ! Сидим с ребятами недоумеваем как и почему!?

#47 Re: Laravel 5.x » Вызвать функцию контроллера средствами JavaScript » 06.03.2017 11:23:24

Deviator2001 пишет:

если Route:post, то через Ajax,
если Route:get - можно location.href = "/archive/"+id;


Через Route::get все работает замечательно, проблема в том что мне нужно все это сделать не обновляя страницу, а route::get возвращает пустую страницу и приходится в контроллере дописывать Redirect::back().

Если использовать Ajax то я по непонятным причинам получаю ответ 500 (Internal Server Error)

#48 Laravel 5.x » Вызвать функцию контроллера средствами JavaScript » 05.03.2017 23:37:31

MeKree
Ответов: 9

Как вызвать функцию с контроллера с параметром средствами JavaScript. Никак не получается и все!


Controller:

    public function archive($id)
    {
      $article = Article::find($id);

      $article->public = 0;
      $article->featured = 0;
      $article->archive = 1;

      $article->save();
    }

И прилагающийся роут:

Route::post('/archive/{id}', 'HomeController@archive');

Буду благодарен ЛЮБЫМ рабочим вариантам. Спасибо!

#49 Re: Laravel 5.x » Проблемы с Laravel 5.4 + ajax » 04.03.2017 21:51:27

Dens пишет:

попробуйте убрать
добавить

data: {'id': item_id, 'public' : '0', '_token':$('#_token').val()},

Не помогло, та же ошибка

#50 Re: Laravel 5.x » Проблемы с Laravel 5.4 + ajax » 03.03.2017 15:17:35

Dens пишет:

Метод PUT обязателен, POST не подходит?

Да обязателен т.к мне нужно апдейтить уже существующие данные.
Да и с POST та же проблема

Подвал раздела