Laravel по-русски

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

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

#1 Laravel 5.x » Laravel eloquent with и left join where по полю » 26.12.2018 12:42:38

z3r9
Ответов: 0

Здравствуйте. Подскажите как сделать аналог используя eloquent:

SELECT * FROM t1 LEFT JOIN t2 ... WHERE t1.a < t2.a_limit

В документации есть вот такое:

$users = App\User::with(['posts' => function ($query) {
    $query->where('title', 'like', '%first%');
}])->get();

Но тут вручную нужно указывать.

#2 Laravel 5.x » Страничная навигация и повторения » 08.02.2018 00:28:32

z3r9
Ответов: 0

Здравствуйте. Подскажите почему повторяются записи при страничной навигации. Грубо говоря есть 50 записей на 5 страницах. Но может быть что на 1 и 10 страницах одна и та же запись повторяется, а определенные записи пропущены. Причем при редактировании исчезают .Сортировки никакой нет. Когда сортировку делаешь, записи появляются пропущенные.

#3 Laravel 5.x » Множественное добавление с селектом » 02.01.2018 14:10:17

z3r9
Ответов: 2

Всех с Новым Годом. Нужно одним запросом в БД добавить множество записей с Select.

Типа вот так:
\App\Example::insert([
    [
        'name' => 'abc',
        'value' => '123',
    ],
    [
        'name' => 'def',
        'value' => '456',
    ],
    // etc...
]);

Только что бы, например, value через select подставилось SELECT t1.value From t1 Where t1.a=X. Просто одним запросом думаю быстрее будет, чем циклом.

#4 Хорошие практики (FAQ) » DRY и выборки » 13.12.2017 21:42:19

z3r9
Ответов: 2

Здравствуйте. Есть форма которая выбирает данные по критериям. Например, цена от и до, и таких полей много. И есть два действия, вывести и экспортировать выборку. Получается в 2-х методах:

if ($request->has('price_from')) {
    $query->where('products.price', '>=', $request->input('price_from'));
}

Я правильно понимаю что это нужно в Модели делать, типа так:

class SomeModel extends Model {

    public function someMethod(Request $request) {

        if ($request->has('price_from')) {
            $query->where('products.price', '>=', $request->input('price_from'));
        }
        ...
    }
}

Или как-то по другому это можно сделать?

#5 Laravel 5.x » Обновление с селектом » 03.12.2017 04:33:55

z3r9
Ответов: 1

Здравствуйте. Подскажите пожалуйста, как сделать обновление с селектом в whereIn.

 
$table2 = DB::table('table2')->select('table1_id')->whereIn('table2.id', $request->input('selected'))
                    ->groupBy('table1_id');

DB::table('table1')->whereRaw('id IN '.DB::raw("({$table2->toSql()})"))->update(...);

Пробовал вот так, но не срабатывает.

#6 Re: Laravel 5.x » Очистить данные update_at » 24.11.2017 13:46:58

AlexeyMezenin, спасибо большое. Первый вариант не сработал, второй сработал.

#7 Laravel 5.x » Очистить данные update_at » 23.11.2017 23:45:16

z3r9
Ответов: 2

Здравствуйте. Подскажите как очистить данные update_at. Запрос типа:

User::whereIn('id', ...)->update(array('updated_at' => null));

Не срабатывает. Дата заменяется на текущую.

#8 Re: Laravel 5.x » Подключение к БД через библиотеки laravel » 25.10.2017 14:25:49

Ты хочешь использовать Eloquent вне ларавела?

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

Или просто есть БД, куда хочешь подключиться как угодно, главное — без ларавела?

Как сторонними средствами сделать я в курсе.

#9 Re: Laravel 5.x » Подключение к БД через библиотеки laravel » 24.10.2017 20:57:16

А в чем проблема?

Проблема с подключением. В документации видел что можно так делать внутри ларавел:

$users = DB::connection('foo')->select(...);

Но мне нужно отдельным скриптом, который вообще не имеет отношения. И вот не знаю какие файлы и как правильно подключить. Что бы подобным образом выолнялись запросы.

#10 Laravel 5.x » Подключение к БД через библиотеки laravel » 24.10.2017 14:12:06

z3r9
Ответов: 5

Здравствуйте. Нужно из стороннего скрипта подключится к БД ларавела используя его библиотеки. Нужно просто для получения данных и БД. Что бы не использовать сторонние скрипты.
Спасибо.

#11 Laravel 5.x » Переменная в контроллере » 28.08.2017 23:27:29

z3r9
Ответов: 1

Здравствуйте. В конструкторе контроллера вообще можно объявить обязательную переменную, что бы ее потом можно было получить в views.
То есть вызываем контроллер с переменной project_id и эта переменная, при работе с другими методами контроллера сохраняется. И так, покуда не откроем контроллер с другим значением project_id.
Спасибо.

#12 Laravel 5.x » Вложенный запрос с whereColumn и where » 04.08.2017 20:42:44

z3r9
Ответов: 1

Подскажите пожалуйста, не получается во вложенном запросе сделать выборку whereColumn и where. Выводит ошибку SQLSTATE[HY093]: Invalid parameter number .

$table2 = DB::table('table2 as t2')->select(DB::raw('count(*)'))
            ->where('t2.status', '=', 'ok') // <== ВОТ ИЗ ЗА ЭТОГО ОШИБКА
            ->whereColumn('t2.table1_id', 'table1.id');

$table1 = DB::table("table1")
            ->select(DB::raw(...
            ({$table2->toSql()}) as t2,
            ..."));

Причем если сделать $table2 = Table2::select(...) и в $table1 добавить ->mergeBindings($table2->getQuery()), то тогда в $table1 не работает ->where(...). Подскажите в чем причина.

#13 Laravel 5.x » В запросе 3 уровня вложенности не находит поле » 22.07.2017 18:12:06

z3r9
Ответов: 1

Здравствуйте. Нужно сделать запрос с 3 уровнями вложенности, но не хочет находить поле.

Запрос 1 такой:

SELECT ... FROM (
                SELECT max(table.id)...
				FROM table
				left ...
				where table.table1_id = table1.id <-- вот это поле не находит
				group by ...
               ) t
           left join ...

И потом этот запрос вставляю в другой:

SELECT (Запрос 1) FROM table1 ...

Подскажите как сделать, что бы 3 уровень вложенности находил поле?

Ps. пока пришлось убрать в 3 уровне 'where table.table1_id = table1.id' и перенести на 2, но из-за этого group by выполняется по большому объему данных.

#14 Laravel 5.x » Внутренние методы в контроллере » 15.07.2017 21:34:00

z3r9
Ответов: 1

В контроллере нужно сделать проверку на существование переменной GET запроса. Хочу сделать отдельным методом типа вот так:

protected function is_param_id(Request $request){
    return redirect('home');
}

Но редирект при вызове метода не работает. Не хочу просто чтобы код повторялся в каждом методе. То же самое и в конструкторе, редирект не работает. Подскажите как сделать.

#16 Re: Laravel 5.x » Уникальные поля и валидация » 03.06.2017 03:17:07

t3_id просто передается по ссылке. Я пока сделал так:
Проверяю name по t2_id на существование валидацией.
Потом получаю по name t2_id (T2 id). T2::select('id')->where(...);
Далее еще раз запускаю валидатор на unique по полям t2_id и t3_id. Просто думал может можно одним валидатором обойтись.

#17 Laravel 5.x » Уникальные поля и валидация » 02.06.2017 13:13:30

z3r9
Ответов: 4

Подскажите пожалуйста кто сталкивался. Есть таблицы:

T1
id
t2_id
t3_id

T2
id
name

Поля t2_id и t3_id в связке пометил как уникальные  $table->unique(['t2_id ', 't3_id ']);

Как сделать валидацию на уникальность, только при условии что я заместо t2_id использую name при добавлении в T1. То есть поля t2_id у меня нет.

#18 Laravel 5.x » Динамическое меню и ссылки » 27.05.2017 18:43:37

z3r9
Ответов: 1

Здравствуйте. Подскажите пожалуйста как сделать динамическое меню и ссылки. То есть типа зависимости от ID. Для примера приведу задачу, есть список машин, у каждой машины свой журнал обслуживания, и еще много других контроллеров которые зависят от ID машины.
Пользователь выбирает конкретную машину по ID и получает динамическое меню и все ссылки с данным ID.
Машины->id_Машины->Меню
Машины->id_Машины->Поломки->ИД_Поломки->edit

Проблема заключается в передаче id_Машины, то есть что бы его не потерять в ссылках. Я понимаю что можно в ручную подставлять:

<a href="{{ action('RepairController@index', $car->id) }}">
    Ссылка
</a>

Может есть какое-то хорошее решение.

#19 Re: Laravel 5.x » Glyphicons и Laravel 5.4.6 » 02.05.2017 21:56:10

Проблема решена. Нужно положить в папку /css/fonts/

#20 Laravel 5.x » Glyphicons и Laravel 5.4.6 » 02.05.2017 21:35:00

z3r9
Ответов: 1

Здравствуйте. Не работают glyphicons от bootstrap. Пишут что нужно просто скопировать в папку fonts, но не помогло.
Еще пишут что нужно в файле app.scss перед bootstrap добавить путь к иконкам:
$icon-font-path: '/fonts/bootstrap/';
Но это то же не помогло. Подскажите пожалуйста как решить проблему с иконками.

#21 Laravel 5.x » Подскажите как правильно с формами работать в 5.4 » 01.03.2017 22:51:16

z3r9
Ответов: 1

Подскажите как лучше всего работать с формами в ларавел 5.4. На сайте в обучающем видео приводится пример через html код. Не ужели нет конструктора форм нормального? Или делать вручную и не парится?

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