我如何在我的播种器中使用我的模型中的 public 数组在我的 table 中插入值?
How can I use a public array from my Model in my Seeder to insert values in my table?
我有一个名为 Browser 的模型,其中包含所有浏览器的数组。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Browser extends Model
{
const CHROME = 'chrome';
const FIREFOX = 'firefox';
const OPERA = 'opera';
const SAFARI = 'safari';
const MICROSOFTEDGE = 'microsoft edge';
const INTERNETEXPLORER = 'internet explorer';
public static $types = [self::CHROME, self::FIREFOX, self::OPERA, self::SAFARI, self::MICROSOFTEDGE, self::INTERNETEXPLORER];
}
而且我有一个填充浏览器的播种器 table。
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class BrowserSeeder extends Seeder
{
public function run()
{
DB::table('browsers')->insert(array(
array('name' => 'chrome'),
array('name' => 'firefox'),
array('name' => 'opera'),
array('name' => 'safari'),
array('name' => 'microsoft edge'),
array('name' => 'internet explorer'),
array('name' => 'other'),
));
}
}
我可以使用我的浏览器模型中的 $types 数组插入到数据库中吗?因为要插入你需要一个关联数组,我想保持 $types 不变。我可以在我的 Seeder 中轻松地将它转换为关联数组,而不需要带有键的数组,而只需要 1 个键吗?
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class BrowserSeeder extends Seeder
{
public function run()
{
$arr = array_map( function( $el ) {
return array('name' => $el );
}, App\Browser::$types );
DB::table('browsers')->insert($arr);
}
}
当然没有必要存储在$arr
中,但我认为这使它更具可读性。
我有一个名为 Browser 的模型,其中包含所有浏览器的数组。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Browser extends Model
{
const CHROME = 'chrome';
const FIREFOX = 'firefox';
const OPERA = 'opera';
const SAFARI = 'safari';
const MICROSOFTEDGE = 'microsoft edge';
const INTERNETEXPLORER = 'internet explorer';
public static $types = [self::CHROME, self::FIREFOX, self::OPERA, self::SAFARI, self::MICROSOFTEDGE, self::INTERNETEXPLORER];
}
而且我有一个填充浏览器的播种器 table。
<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class BrowserSeeder extends Seeder
{
public function run()
{
DB::table('browsers')->insert(array(
array('name' => 'chrome'),
array('name' => 'firefox'),
array('name' => 'opera'),
array('name' => 'safari'),
array('name' => 'microsoft edge'),
array('name' => 'internet explorer'),
array('name' => 'other'),
));
}
}
我可以使用我的浏览器模型中的 $types 数组插入到数据库中吗?因为要插入你需要一个关联数组,我想保持 $types 不变。我可以在我的 Seeder 中轻松地将它转换为关联数组,而不需要带有键的数组,而只需要 1 个键吗?
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class BrowserSeeder extends Seeder
{
public function run()
{
$arr = array_map( function( $el ) {
return array('name' => $el );
}, App\Browser::$types );
DB::table('browsers')->insert($arr);
}
}
当然没有必要存储在$arr
中,但我认为这使它更具可读性。