Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
В Windows вместо cron используй Планировщик Задач. Тебе нужно сделать так, чтобы команда schedule:run запускалась каждую минуту.
ну так в этом и состоит мой вопрос на этом форуме.
как это сделать?
я так понял что 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.
```
пытаюсь понять как работает планировщик задач в 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 - письмо уходит (локально)
ДАЛЬШЕ ДЕЛАЮ НАУГАД ТАК КАК НЕ ЗНАЮ КАК ПРАВИЛЬНО
дальше что бы запустить планировщик в консоли php artisan schedule:run - письмо приходит но только одни раз сразу через минуту ничего не происходит
в чем может быть моя ошибка?
как регистрировать я понял, а как мне вернуть вот такой вот код через 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>
не могу понять где регистрировать форму для ее короткого использования? На одном ресурсе наше такой путь app/start/global.php file, но у меян нет такого файла global.php
Кто что знает по этому поводу?
какой есть способ убрать убрать повторяющийся код HTML, например в форме есть одинаковые поля штук 10, как и где и вообще можно ли сделать что бы свести к минимум кол-ва кода
дайте ссылочку или в двух словах
спасибо! )
<a href="{{ url('/showRecipeHandler?id=') }}<?php echo $value->id?>">тексттекст</a>
как присоединить id шник что бы или с использованием blade или на чистом рнр ссылка была
скажи а что в $key - $_POST['unit'][$key]]?
присмотрись повнимательнее к foreach, $key – порядковый номер обрабатываемого элемента в первом массиве – к нему и подбираются по тому же номеру элементы из остальных массивов
супер получилось! как теперь выводить информацию из объединяющей таблицы. полную в формате
Рецепт
короткое описание
полный рецепт // эти три из таблицы dishes
ингредиент1 150 гр
ингредиент2 150 гр
ингредиент3 150 гр
ингредиент4 150 гр
ну так и я о том же у тебя есть тимлид, которому платят в том числе и за то чтобы он тебя учил зачем вообще форум тогда нужен?
блин )) ну это не то что бы тимлид, нас пачку набралин ньюби, на всех время не уделять, самый смышленые остануться, не кто не кому не помогает....
скажи а что в $key - $_POST['unit'][$key]]?
если у тебя есть тимлид – зачем тогда тут спрашивать? или он необщительный?
я на обучении
foreach ($_POST['ingr'] as $key => $v)
а сколько циклов будет? разве не один? а мне 4 нужно
я одного не понимаю, зачем от юниты отдельная таблица и почему на каждую отдельную запись туда добавляются новые значения? там разве нету уже готового «справочника» возможных значений? если так то видимо в форме должен быть селект который выбирает варианты из справочника и тогда в $_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 а остальные записи много, через форыч?
зачем от юниты отдельная таблица и почему на каждую отдельную запись
Эту таблицу мне тимлид утвердил
Бьюсь голой уже несколько суток, помогите решить ребус
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
помогите пожалуйста