Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Проверяй на количество значений в массиве. Если больше 1, то циклом выводить.
Убери три точки перед названием переменной, про которую тебя спросили выше и проверь.
$order = OnOrderType::with('models')->where('address', $onOrderType_address)->orderBy('id', 'desc')->first();
Должно быть так. Попробуй перед условием эту строку прописать и проверить, что ложится в $order.
Здравствуйте.
Проблема / непонятки с построением ексель файлы при записи данных в него.
Сохраняю данные сразу в файл, который имеет расширение 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);
Ааааа, точно точно. Ступил, скопировав не думая. Каюсь. Править уже не могу сообщение. . .
На сколько я понимая(очень плохо пока в этом всём разбираюсь), js через post должен сам получать разрешение (csrf-token) на переправку данных, а не из формы их брать, как в твоём случае прописанный ключик в ajaxSetup
Ммм нет. Ты не понял, куда вставлять данную проверку.
@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
То есть сперва проверка на переменную, а потом уже код, который использует эту переменную.
Во первых, код из файлов можно было подчистить, чтобы пустые функции не светились. Места меньше - читать проще.
Во вторых, проверял ли, что выводится из Auth::user() ? Есть ли там значение unreadNotifications. Попробуй \Auth::user(). По моему ещё есть конструкция \Auth::user()->find($user_id)
Может я скажу что то совсем простое иии тупое или глупое, но ведь логично, что такое количество в выборке. Тебе нужно продумать саму выборку, как бы ты на чистом sql выбирал. Просто сперва получаешь таблицу версий, к каждой внутренней записи цепляешь энное количество записей из таблицы групп, в свою очередь к её записям ещё и продуктов записи, а к продуктам поля. . . Ну это перебор. Быть может джойны тут спасут.
Ахаххх, хорошо быть мёртвым. Не нужно впахивать как живой
Есть таблица продуктов. В неё ложатся данные из . . .пока трёх таблиц. У неё два идентифицирующие поля, показывающих из какой таблицы товар - entity_type и entity_id. На странице выводятся данные товары из данной таблицы. Сейчас же, задача не просто выводить, а подсчитать сколько однотипного товара емеется и вывести его всего лишь раз с цифрой, обозначающей количество.
Например есть три игрушки - машинки, самолётики и корабли - для каждого типа своя таблица. Если раньше на странице выводилось.
Например - машинка белая, машинка чёрная, самолётик синий, самолётик красный, корабль жёлтый, корабль радужный.
Теперь должно вывести - машинка без разницы цвет, количество машинок. Самолётик без разницы цвет, количество самолётиков. Кораблик аналогично.
Ну, у меня до сих пор нет приличного опыта в этом и я не вижу конкретной "неправильности" в отмене "правильности"
Решено, я имел ввиду - стала понятна ошибка, почему нельзя вывести все поля, а группировать только по некоторым.
Вот именно тут мне придётся часть функционала выборки из sql перенести на php, так как на sql я не могу выбрать всё, сортируя по двум полям. Придётся выбрать всё, а на пхп подсчитать схожие записи.
Это понятно и я не говорю всё менять. Так, на будущее, если не знал.:) Я тут сильно экспериментировал с запросами и открыл для себя, что иногда два запроса лучше одного, а Eloquent сам может разделить одну конструкцию на несколько запросов.
Кароооче. Твой запрос перенести мне слабо, но можно попробовать написать несколько запросов.
Это всё понятно.
Под словами "все поля занести в group bу", это значит, что бы запрос прошёл и ошибка не высветилась. Естественно, что мне левые поля не нужны в group by. Прямой запрос в БД проходит на ура, а вот через ларавель не выходит каменный цветок.
Судя твоему примеру - сгруппируем мы по возрасту, а имя и зарплата будут дублироваться. Ну и пусть, они же не уникальные. Главное что не будет дублей в колонке возраста, а имя или зарплата будет подставлено первое попавшееся значение из сгруппированных строк, по идее. Но это опять же в рамках допустимого, так как не уникальные поля.
П.С. А, всё понятно, всё решено. Для нуждающихся -
https://laracasts.com/discuss/channels/ … ot-working
Здравствуйте.
Есть запрос
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. Как быть, что делать, что бы получить все поля, но группировать лишь по двум?
Сложные у тебя запросы. Честно, с джойнами почти не работаю. Их заменяют такие функции как 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
А вот джойнить чёт у меня не получается
После сбора данных в контролере ты же отправляешь какие то данные во вьюшку? Как то она у тебя строится ведь.
Если нет, в первые это делаешь, тогда так -
public function showAvto($id1, $id2){
// Магия тут
...
.....
return view('папка_в_каталоге_views.файл_в_папке_которая_в_каталоге_views', ['имя_переменной_которое_получаешь_в_файл_в_папке_которая_в_каталоге_views' => $переменная_которая_получена_в_этом_контроллере] );
}
В догонку
http://laravel.su/docs/5.2/views
Может тоже плюсом будут -
$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', '!=', 'нужный');
});
Вопрос. Если менеджер уже имеет связь с клиентами, то почему у него нельзя вывести всё тоже самое, что и у клиента?
Ну, то есть если клиенту ты сразу выводишь цену, скидку, то у менеджеру ты сперва даёшь выбрать клиента, а когда он выбирает, то запускаешь ту же функцию вывода цены, скидки что и для клиента.
Кстати, а ты куки свои смотришь или чужие?
Просто я как то раз затупил. Создавал куки для авторизованных пользователей, то есть для каждого свои и проверял есть ли такие, находясь в своей учётке. Естественно, в моём браузере небыло кук созданных для других пользователей.
Ну и ещё такой момент - когда куки отправил, то сперва должна загрузиться страница, а уже после, при повторной загрузке страницы они должны попадать в мидлвер.
Если у тебя стандартные функции пхп не работают, то по идее не должны и ларавельские работать. Я мельком глядел, вроде ларавельские на них основаны. Хотя не уверен.
Мне не понравилось работать с куками. И в итоге я на кэш перешёл.
А вообще вот это помогло по моему.
https://stackoverflow.com/questions/452 … r-45208138
Если нет, то стандартные функции от пхп по работе с куками однозначно должны работать.
Вообще возможно же всё, было бы время.
Но я не понял проблемы. Список шаблон это же название файла шаблона, которые лежат в статичном месте. Если названия в БД хранятся , то берёшь из БД, или же ищешь папку с шаблонами, получаешь названия.
Аватар шаблона. . . ну картинки то точно в БД? Аналогично.
Файл шаблона. Ну, как я понимаю, есть имя, есть путь до файла -> есть шаблон?
Искал долго, нашёл случайно.
Оставлю это тут на будущее.
Задача - вывести форму в блок (например добавления коммента, по типу вконтактика). Форма - 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']);
});
Здравствуйте.
Подскажите как обратиться к свойствам модели, если название модели содержится в переменной?
Есть что-то типа -
$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()
}
Я не уверен, но ->find() ищет по строчке, а не по массиву. Строчкой выше -get() вы получаете не строчку, а массив/объект/коллекцию(у меня сложно с наименованиями).
То есть типа такого
->hasMany('App\Models\JackpotBets', 'game_id')->where('JackpotBets.room','Jackpot.room');
тоже не работает?
(не проверял, просто предположил)