Laravel по-русски

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

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

#1 Re: Laravel 5.x » планировщик задач » 09.11.2017 15:05:03

Leo

В Windows вместо cron используй Планировщик Задач. Тебе нужно сделать так, чтобы команда schedule:run запускалась каждую минуту.

ну так в этом и состоит мой вопрос на этом форуме. smile
как это сделать?

#2 Re: Laravel 5.x » планировщик задач » 09.11.2017 14:41:56

Leo

я так понял что cron это для unix  систем, а мне на винде нужно
Пытаюсь в консоли выполнить php artisan schedule:run вижу вывод

Running scheduled command: "d:\openserver\modules\php\PHP-7.0\php.exe" "artisan" bitcoin:sendEmail > "NUL" 2>&1

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

в документации ничего об этом нет (

```
Starting The Scheduler
Here is the only Cron entry you need to add to your server:

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
This Cron will call the Laravel command scheduler every minute. Then, Laravel evaluates your scheduled tasks and runs the tasks that are due.
```

#3 Laravel 5.x » планировщик задач » 09.11.2017 01:16:08

Leo
Ответов: 8

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

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

итак

через консоль создал App\Console\Commands\bitcoinTest

в нем

protected $signature = 'bitcoin:sendEmail';

public function handle()
    {
        //
//        $provider = $this->argument('provider');
 
 
        $to = 'еее@gmail.com';
        $subject = 'test mail';
 
        $message = mail($to,$subject, 'test message from laravel');
        if($message){
            $flag = true;
            echo 'mail go';
        }else {
            $flag = false;
            echo 'mail NOT go';
        }
        return $flag;
    }

В файле App\Console\Kernel.php

protected $commands = [
        //
        'App\Console\Commands\bitcoinTest'
    ];

protected function schedule(Schedule $schedule)
    {
 
        $schedule->command('bitcoin:sendEmail')
            ->everyMinute();
    }

через консоль запускаю php artisan bitcoin:sendEmail - письмо уходит (локально)
ДАЛЬШЕ ДЕЛАЮ НАУГАД ТАК КАК НЕ ЗНАЮ КАК ПРАВИЛЬНО smile
дальше что бы запустить планировщик в консоли php artisan schedule:run - письмо приходит но только одни раз сразу через минуту ничего не происходит

в чем может быть моя ошибка?

#4 Re: Laravel 5.x » Где регистрировать Form::marco()? » 31.05.2017 12:06:23

Leo

как регистрировать я понял, а как мне вернуть вот такой вот код через Form::macro?

<tr>
         <td>
                  {!! Form::text('ingr[]', null, ['class' => 'form-control']) !!}
         </td>
         <td style="width: 15%">
                   {!! Form::text('quantity[]', null, ['class' => 'form-control']) !!}
          </td>
           <td style="width: 15%">
                   {!! Form::text('unit[]', null, ['class' => 'form-control']) !!}
            </td>
</tr>

#5 Laravel 5.x » Где регистрировать Form::marco()? » 31.05.2017 11:32:27

Leo
Ответов: 2

не могу понять где регистрировать форму для ее короткого использования? На одном ресурсе наше такой путь app/start/global.php file, но у меян нет такого файла global.php

Кто что знает по этому поводу?

#6 Laravel 5.x » Убрать повторяющийся код HTML » 26.05.2017 16:01:57

Leo
Ответов: 2

какой есть способ убрать убрать повторяющийся код HTML, например в форме есть одинаковые поля штук 10, как и где и вообще можно ли сделать что бы свести к минимум кол-ва кода

дайте ссылочку или в двух словах
спасибо! )

#7 Laravel 5.x » Разный стиль написания » 25.05.2017 16:04:06

Leo
Ответов: 3
<a href="{{ url('/showRecipeHandler?id=') }}<?php echo $value->id?>">тексттекст</a>

как присоединить id шник что бы или с использованием blade или на чистом рнр ссылка была

#8 Re: Laravel 5.x » сохранение инфы в промежуточную таблицу » 25.05.2017 12:09:06

Leo
constb пишет:

скажи а что в $key -  $_POST['unit'][$key]]?

присмотрись повнимательнее к foreach, $key – порядковый номер обрабатываемого элемента в первом массиве – к нему и подбираются по тому же номеру элементы из остальных массивов

супер получилось! как теперь выводить информацию из объединяющей таблицы. полную в формате

Рецепт
короткое описание
полный рецепт // эти три из таблицы dishes

ингредиент1 150 гр
ингредиент2 150 гр
ингредиент3 150 гр
ингредиент4 150 гр

#9 Re: Laravel 5.x » сохранение инфы в промежуточную таблицу » 25.05.2017 09:10:46

Leo
constb пишет:

ну так и я о том же smile у тебя есть тимлид, которому платят в том числе и за то чтобы он тебя учил smile зачем вообще форум тогда нужен? smile

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

скажи а что в $key -  $_POST['unit'][$key]]?

#10 Re: Laravel 5.x » сохранение инфы в промежуточную таблицу » 24.05.2017 20:46:00

Leo
constb пишет:

если у тебя есть тимлид – зачем тогда тут спрашивать? smile или он необщительный? smile

я на обучении

#11 Re: Laravel 5.x » сохранение инфы в промежуточную таблицу » 24.05.2017 20:08:43

Leo
constb пишет:
foreach ($_POST['ingr'] as $key => $v)

а сколько циклов будет? разве не один? а мне 4 нужно

#12 Re: Laravel 5.x » сохранение инфы в промежуточную таблицу » 24.05.2017 20:05:10

Leo
constb пишет:

я одного не понимаю, зачем от юниты отдельная таблица и почему на каждую отдельную запись туда добавляются новые значения? там разве нету уже готового «справочника» возможных значений? если так то видимо в форме должен быть селект который выбирает варианты из справочника и тогда в $_POST['unit'] должны приходить айдишники уже существующих единиц измерения.

в этом случае у тебя будет только один цикл

foreach ($_POST['ingr'] as $key => $v) {
    $dish->ingredients()->attach(
        Ingredient::FirstOrCreate(['name' => $v]), 
        ['quantity' => $_POST['quantity'][$key], 'units_id' => $_POST['unit'][$key]]
    );
}

но у этого кода тоже есть недостаток – все получаемые данные должны извлекаться из объекта запроса, а не напрямую из $_POST, а их корректность должна проверяться стандартными или кастомными валидаторами

про селект так и есть, но если я захочу сделать не селект а свободную форму... В общем самое главное я не пойму как как добавлять еще записи если dish id 1  а остальные записи много, через форыч?

#13 Re: Laravel 5.x » сохранение инфы в промежуточную таблицу » 24.05.2017 19:52:19

Leo
constb пишет:

зачем от юниты отдельная таблица и почему на каждую отдельную запись

Эту таблицу мне тимлид утвердил

#14 Laravel 5.x » сохранение инфы в промежуточную таблицу » 24.05.2017 17:54:10

Leo
Ответов: 10

Бьюсь голой уже несколько суток, помогите решить ребус

http://prntscr.com/fbl0e1 структура БД

Модель один

class Dish extends Model
{
    protected $table = 'dishes';
    protected $fillable = ['name', 'specification', 'recipe'];


    public function ingredients()
    {
        return $this->belongsToMany('App\Ingredient','dish__ingredients')
            ->withPivot(['quantity', 'units_id'])
            ->withTimestamps();

    }

}

Модель два

class Ingredient extends Model
{
    protected $table = 'ingredients';
    protected $fillable = ['name'];

    public function dishes()
    {
        return $this->belongsToMany('App\Dish','dish__ingredients');
    }

    public function units()
    {
        return $this->hasOne('App\Unit');
    }

}

Модель три

class Unit extends Model
{
    protected $table = 'units';
    protected $fillable = ['name'];

    public function ingredients()
    {
        return $this->belongsTo('App\Ingredient');
    }

}

принимаю из формы массивы информации, как мне их записать в таблицу что бы связать? ((

        $dish = Dish::FirstOrCreate([
            'name' => $request['name_recipe'],
            'specification' => $request['receiptComment'],
            'recipe' => $request['receipt_description']
        ]);

        foreach ($_POST['ingr'] as $v) {
            $ingr[] = Ingredient::FirstOrCreate(['name' => $v])->id;
        }


        foreach ($_POST['unit'] as $v) {
            $unit[] = Unit::FirstOrCreate(['name' => $v])->id;
        }

        $quan = $_POST['quantity'];

        $dish->ingredients()->attach($ingr, ['quantity' => $quan[1], 'units_id' => $unit[1]]); // если записывать так то только одно значение записывается во всех полях, а мне нужно на каждой итерации новое СЛЕДУЩЕЕ значение этих массивов 


$dish->ingredients()->attach($ingr)

withPivot добавлены поля для заполнения вторым параметром, если передавать строку все норм записывается только одна строка, а у меня массив данных
$dish->ingredients()->attach($ingr, ['quantity' => $quan, 'units_id' => $unit]) если $quan и $unit передать масивом будет ошибка Array to string conversion (понятно что нужно предать строку а не массив)
http://prntscr.com/fbl6kd

помогите пожалуйста

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