Laravel по-русски

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

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

#1 Re: Laravel 5.x » Как вывести определенную ошибку? » 05.12.2019 16:15:56

Проверяй на количество значений в массиве. Если больше 1, то циклом выводить.

#2 Re: Laravel 5.x » Помогите исправить элементарную ошибку » 05.12.2019 16:13:19

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

#3 Re: Laravel 5.x » Помогите встроить orderBy в код. » 05.12.2019 16:09:24

$order = OnOrderType::with('models')->where('address', $onOrderType_address)->orderBy('id', 'desc')->first();

Должно быть так. Попробуй перед условием эту строку прописать и проверить, что ложится в $order.

#4 Веб-разработка » Запись строчек в файл с расширением .xls » 30.10.2019 10:54:08

Alexandr5
Ответов: 1

Здравствуйте.
Проблема / непонятки с построением ексель файлы при записи данных в него.
Сохраняю данные сразу в файл, который имеет расширение xls и открывается экселем (хотя везде пишут что это проблема и нужны библиотеки специальные. Не суть в общем). Созданный файл открываю на винде, кодировка летит. Ексель открывает с кодировкой CP1251 (через онлайн декодер узнал), поэтому перекодирую под винду и всё открывается нормально.
Самый смак в том, что пытаюсь заполнить два столбика, например - фамилия, имя. Строка строится в цикле так - $text .= $value.'; '.$key.';'."\r\n";
При обычных условиях в одну ячейку пишется и фамилия и имя. Если же добавить при записи в файл - fwrite($files, "\xEF\xBB\xBF"); тогда фамилия пишется в один столбец, имя в другой.
Вопрос, почему так? Почитал про эти символы - это либо пробелы, если в середине текста, либо указатели, что файл в кодировке utf-8.
И если кто то писал данные в ексель, то подскажите как нужно было разделить данные по столбцам.

Для примера код, где фамилия и имя разделены по столбцам и новая запись пишется в новой строке -

        $text = '';
	foreach ($arrayData as $key => $value) {
		$text .= $value.'; '.$key.';'."\r\n";
	}
        $files = fopen($_SERVER['DOCUMENT_ROOT']."/file_text.xls","w+b");
        fwrite($files, "\xEF\xBB\xBF");
	$text = mb_convert_encoding($text,"windows-1251");
	fwrite($files, $text);
	fclose ($files);

#5 Re: Laravel 5.x » Как сделать вывод сообщения если записей в бд нет то "Записей нет" » 14.10.2019 10:12:34

Ааааа, точно точно. Ступил, скопировав не думая. Каюсь. Править уже не могу сообщение. . .

#6 Re: Laravel 5.x » Помогите реализовать связанные списки с помощью функции jQuery ajax. » 14.10.2019 10:10:05

На сколько я понимая(очень плохо пока в этом всём разбираюсь), js через post должен сам получать разрешение (csrf-token) на переправку данных, а не из формы их брать, как в твоём случае прописанный ключик в ajaxSetup

#7 Re: Laravel 5.x » Как сделать вывод сообщения если записей в бд нет то "Записей нет" » 11.10.2019 13:16:05

Ммм нет. Ты не понял, куда вставлять данную проверку.

@if($brands->count() === 0)
  @foreach($brands as $brand)
    <tr>
         <td>
              {{$brand->alias}}
          </td>
           <td>
                {{$brand->description}}
           </td>
            <td>
                  {$brand->meta_title}}--}}
            </td>
     . . . 
@else
      {{$title}}
@endif

То есть сперва проверка на переменную, а потом уже код, который использует эту переменную.

#8 Re: Laravel 5.x » Проблемы с уведомлениями. » 11.10.2019 13:08:24

Во первых, код из файлов можно было подчистить, чтобы пустые функции не светились. Места меньше - читать проще.
Во вторых, проверял ли, что выводится из Auth::user() ? Есть ли там значение unreadNotifications. Попробуй \Auth::user(). По моему ещё есть конструкция \Auth::user()->find($user_id)

#9 Re: Laravel 5.x » Ленивая загрузка без eloquent? » 11.10.2019 12:49:14

Может я скажу что то совсем простое иии тупое или глупое, но ведь логично, что такое количество в выборке. Тебе нужно продумать саму выборку, как бы ты на чистом sql выбирал. Просто сперва получаешь таблицу версий, к каждой внутренней записи цепляешь энное количество записей из таблицы групп, в свою очередь к её записям ещё и продуктов записи, а к продуктам поля. . . Ну это перебор. Быть может джойны тут спасут.

#10 Re: Laravel 5.x » Группировка в запросе. Непонятно. » 12.09.2019 14:48:20

Ахаххх, хорошо быть мёртвым. Не нужно впахивать как живой big_smile

Есть таблица продуктов. В неё ложатся данные из . . .пока трёх таблиц. У неё два идентифицирующие поля, показывающих из какой таблицы товар - entity_type и entity_id. На странице выводятся данные товары из данной таблицы. Сейчас же, задача не просто выводить, а подсчитать сколько однотипного товара емеется и вывести его всего лишь раз с цифрой, обозначающей количество.
Например есть три игрушки - машинки, самолётики и корабли - для каждого типа своя таблица. Если раньше на странице выводилось.
Например - машинка белая, машинка чёрная, самолётик синий, самолётик красный, корабль жёлтый, корабль радужный.
Теперь должно вывести - машинка без разницы цвет, количество машинок. Самолётик без разницы цвет, количество самолётиков. Кораблик аналогично.

#11 Re: Laravel 5.x » Группировка в запросе. Непонятно. » 12.09.2019 13:46:07

Ну, у меня до сих пор нет приличного опыта в этом и я не вижу конкретной "неправильности" в отмене "правильности" big_smile
Решено, я имел ввиду - стала понятна ошибка, почему нельзя вывести все поля, а группировать только по некоторым.

Вот именно тут мне придётся часть функционала выборки из sql перенести на php, так как на sql я не могу выбрать всё, сортируя по двум полям. Придётся выбрать всё, а на пхп подсчитать схожие записи.

#12 Re: Laravel 5.x » Subquery в join » 12.09.2019 12:31:52

Это понятно и я не говорю всё менять. Так, на будущее, если не знал.:) Я тут сильно экспериментировал с запросами и открыл для себя, что иногда два запроса лучше одного, а Eloquent сам может разделить одну конструкцию на несколько запросов.
Кароооче. Твой запрос перенести мне слабо, но можно попробовать написать несколько запросов.

#13 Re: Laravel 5.x » Группировка в запросе. Непонятно. » 12.09.2019 12:26:35

Это всё понятно.
Под словами "все поля занести в group bу", это значит, что бы запрос прошёл и ошибка не высветилась. Естественно, что мне левые поля не нужны в  group by. Прямой запрос в БД проходит на ура, а вот через ларавель не выходит каменный цветок.
Судя твоему примеру - сгруппируем мы по возрасту, а имя и зарплата будут дублироваться. Ну и пусть, они же не уникальные. Главное что не будет дублей в колонке возраста, а имя или зарплата будет подставлено первое попавшееся значение из сгруппированных строк, по идее. Но это опять же в рамках допустимого, так как не уникальные поля.

П.С. А, всё понятно, всё решено. Для нуждающихся -
https://laracasts.com/discuss/channels/ … ot-working

#14 Laravel 5.x » Группировка в запросе. Непонятно. » 12.09.2019 11:05:51

Alexandr5
Ответов: 6

Здравствуйте.
Есть запрос

Product::where('', '')
	->select(\DB::raw('COUNT(*) AS counts, file_id, file_name'))
	->groupBy('file_id','file_name')->orderBy('created_at', 'desc')->get();

Если вот так, то всё хорошо. Если же мне нужны все поля в выборке, то
Ни так
   ->select(\DB::raw('COUNT(*) AS counts, product.*'))
Ни так не работает.
   ->select(\DB::raw('COUNT(*) AS counts, перечисление_всех_полей'))
И выходит ошибка
Syntax error or access violation: 1055 'БД.product.id' isn't in GROUP BY
То есть что бы все поля вывести, мне их нужно все заталкать в groupBy. Как быть, что делать, что бы получить все поля, но группировать лишь по двум?

#15 Re: Laravel 5.x » Subquery в join » 12.09.2019 10:30:30

Сложные у тебя запросы. Честно, с джойнами почти не работаю. Их заменяют такие функции как has, with, whereHas , подробнее например -
http://www.itmathrepetitor.ru/laravel-5 … -wherehas/
Правда результат и его обработка будет чуток отличной, зато код понятнее и меньше. А иногда и быстрее.
В кратце - что бы написать конструкцию типа Сontainer::with('weight', 'container_run')->where('id',1)->get(); Нужно что бы в модели Сontainer, которая работает по таблице container, была прописана связь (один к одному, один ко многим) к таблицам weight и container_run, которые так же имеют свои модели. Подробнее - https://laravel.ru/docs/v5/eloquent#%D0 … 0%B8%D1%8F
А вот джойнить чёт у меня не получается big_smile

#16 Re: Laravel 5.x » Как из простого массива двумя параметрами вывести инф. во view? » 12.09.2019 10:16:25

После сбора данных в контролере ты же отправляешь какие то данные во вьюшку? Как то она у тебя строится ведь.
Если нет, в первые это делаешь, тогда так -

public function  showAvto($id1, $id2){
    //	Магия тут 
     ...  
    .....
    return view('папка_в_каталоге_views.файл_в_папке_которая_в_каталоге_views', ['имя_переменной_которое_получаешь_в_файл_в_папке_которая_в_каталоге_views' => $переменная_которая_получена_в_этом_контроллере] );

}

В догонку
http://laravel.su/docs/5.2/views

#17 Re: Laravel 5.x » выбрать записи которых нет » 30.08.2019 15:42:07

Может тоже плюсом будут -

$this->builder->where(function($q){
   $arrId = Table2::where('title', 'нужный')->pluck('связующее поле таблицы 2');
   $q->whereNotIn('связующее поле таблицы 1',$arrId);
})

Если через джойны

$this->builder->leftJoin('table2', 'связующее поле таблицы 2', '=', 'связующее поле таблицы 1')->where(function($q){ 
             $q->whereNull( table2.id )->OrWhere('table2.title', '!=', 'нужный');
       });

#18 Re: Laravel 5.x » Подмена user » 02.08.2019 14:10:59

Вопрос. Если менеджер уже имеет связь с клиентами, то почему у него нельзя вывести всё тоже самое, что и у клиента?
Ну, то есть если клиенту ты сразу выводишь цену, скидку, то у менеджеру ты сперва даёшь выбрать клиента, а когда он выбирает, то запускаешь ту же функцию вывода цены, скидки что и для клиента.

#19 Re: Laravel 5.x » Как отправить куки в middleware Laravel? » 02.08.2019 13:58:43

Кстати, а ты куки свои смотришь или чужие?
Просто я как то раз затупил. Создавал куки для авторизованных пользователей, то есть для каждого свои и проверял есть ли такие, находясь в своей учётке. Естественно, в моём браузере небыло кук созданных для других пользователей.
Ну и ещё такой момент - когда куки отправил, то сперва должна загрузиться страница, а уже после, при повторной загрузке страницы они должны попадать в мидлвер.
Если у тебя стандартные функции пхп не работают, то по идее не должны и ларавельские работать. Я мельком глядел, вроде ларавельские на них основаны. Хотя не уверен.

#20 Re: Laravel 5.x » Как отправить куки в middleware Laravel? » 31.07.2019 09:51:32

Мне не понравилось работать с куками. И в итоге я на кэш перешёл.
А вообще вот это помогло по моему.
https://stackoverflow.com/questions/452 … r-45208138

Если нет, то стандартные функции от пхп по работе с куками однозначно должны работать.

#21 Re: Laravel 5.x » REST API для файлов, изображений » 31.07.2019 09:31:05

Вообще возможно же всё, было бы время.
Но я не понял проблемы. Список шаблон это же название файла шаблона, которые лежат в статичном месте. Если названия в БД хранятся , то берёшь из БД, или же ищешь папку с шаблонами, получаешь названия.
Аватар шаблона. . . ну картинки то точно в БД? Аналогично.
Файл шаблона. Ну, как я понимаю, есть имя, есть путь до файла -> есть шаблон?

#22 Laravel 5.x » Вывод формы на страницу через ajax » 30.05.2019 15:15:34

Alexandr5
Ответов: 1

Искал долго, нашёл случайно.
Оставлю это тут на будущее.
Задача - вывести форму в блок (например добавления коммента, по типу вконтактика). Форма - Kris\LaravelFormBuilder
Создаём файл шаблона для вывода формы -

{!! form_start($form) !!}
{!! form_row($form->image) !!}
{!! form_row($form->text) !!}
{!! form_row($form->submit) !!}
{!! form_end($form) !!}

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

// ->render() обязателен.
$html = view('view.blockForm', compact('form'))->render();
return \Response::json(['html' => $html]);

В jquery просто выводим данную переменную.

$.ajax({
// params
}).done(function( data ) {
   blockThis.append(data['html']);
});

Ссыль оригинала

#23 Laravel 5.x » Работа с моделями » 24.05.2019 09:48:55

Alexandr5
Ответов: 0

Здравствуйте.
Подскажите как обратиться к свойствам модели, если название модели содержится в переменной?
Есть что-то типа -

$item=Product::with('image','like','comment.image','feedback.image')->find($id);
foreach ($item->getRelations() as $model => $value) {
   //должно быть
   // $item->image()->delete();
   // $item->comment->image()->delete(); и т.д.

   // Так не работает - undefined delete()
   $item->$model->delete();
   // Так тем более :D:D:D $item->$model()->delete()
}

#24 Re: Laravel 5.x » Получить ID строки » 04.04.2019 16:01:59

Я не уверен, но ->find() ищет по строчке, а не по массиву. Строчкой выше -get() вы получаете не строчку, а массив/объект/коллекцию(у меня сложно с наименованиями).

#25 Re: Laravel 5.x » Помогите сделать нужное вхождение таблиц » 07.03.2019 11:22:55

То есть типа такого
->hasMany('App\Models\JackpotBets', 'game_id')->where('JackpotBets.room','Jackpot.room');
тоже не работает?
(не проверял, просто предположил)

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