Laravel:将变量传递给Schema :: create

时间:2017-05-17 09:01:18

标签: php laravel controller

如何将$i变量传递给此函数?

$i = 0;
        foreach(request('nazwa') as $n){
            $nr = new Schemat;
            $nr->specjalizacja_id = $s->id;
            $nr->nazwa=$n;
            $nr->typ=request('typ')[$i];
        //    $nr->save();
            $i++;
        }
        $i = $i-1;

        Schema::connection('mysql')->create($s->nazwa, function($table){
            $table->increments('id');
            $table->integer('pacjent_id');
            $table->integer('wizyta_id');
            for($j=$i; $j>=0; $j--){ //**Undefined variable: i ERROR**
               if(request('typ')[$j] == 0){
                  $table->integer(request('nazwa')[$j]);
               } elseif(request('typ')[$j] == 1){
                  $table->text(request('nazwa')[$j]);
               } else {
                  $table->text(request('nazwa')[$j]);
               }
            }

            $table->timestamps();
        });

1 个答案:

答案 0 :(得分:2)

如果您想使用$i等本地变量,请使用use()将其传递给匿名函数。

Schema::connection('mysql')
    ->create($s->nazwa, function($table) use ($i) {
        $table->increments('id');
        $table->integer('pacjent_id');
        $table->integer('wizyta_id');

        for ($j = $i; $j >= 0; $j--) {
            if (request('typ')[$j] == 0) {
                $table->integer(request('nazwa')[$j]);
            } elseif (request('typ')[$j] == 1) {
                $table->text(request('nazwa')[$j]);
            } else {
                $table->text(request('nazwa')[$j]);
            }
        }

        $table->timestamps();
    });