file_get_contents 在种子文件中不起作用,但在 laravel 5 中的路由文件中起作用
file_get_contents doesn't work in seed file but work in the routes file in laravel 5
我正在尝试使用旧 table.
的 JSON 输出在 laravel 中播种 table
当我尝试在种子文件中 file_get_contents('services.json')
时,我得到一个异常,该文件不存在,我也尝试使用 file_exists('services.json')
并返回 false
但是当我从路由文件中尝试过,它工作得很好,我的 table 种子。我的路线如下所示:
Route::get('test', function(){
// return JWTAuth::parseToken()->getPayload()->get('username');
Illuminate\Database\Eloquent\Model::unguard();
// \Db::table('service')->truncate();
$servicesDataFromOldDB = file_get_contents('../database/seeds/services.json');
$servicesJson = json_decode($servicesDataFromOldDB);
$services = Illuminate\Support\Collection::make($servicesJson);
$services->each(function($service){
App\Service::create([
'id' => $service->id,
'name' => $service->title,
'description' => $service->desc,
'category' => $service->cat,
'type' => $service->type,
'hours' => $service->hours,
'price' => $service->price,
'note' => $service->note,
'devdays' => $service->devdays
]);
});
Illuminate\Database\Eloquent\Model::reguard();
});
我正在从相同的路径获取相同的文件,它能够获取它但不能在种子文件中获取。我错过了什么?
编辑
dd(file_exists(app_path() . '/database/seeds/services.json'));
连这个都返回false
此外,我在种子文件中做了 dd(__DIR__)
,这是正确的路径 /var/www/html/archive/database/seeds
使用__DIR__
你可以获得当前文件所在的目录,然后使用realpath()
,你可以获得完整的合格路径文件。
realpath(__DIR__ . '../database/seeds/services.json');
这意味着您可以设置相对于您正在使用的文件目录的路径,并确保它可以在代码中的任何其他位置运行。
我正在尝试使用旧 table.
的 JSON 输出在 laravel 中播种 table当我尝试在种子文件中 file_get_contents('services.json')
时,我得到一个异常,该文件不存在,我也尝试使用 file_exists('services.json')
并返回 false
但是当我从路由文件中尝试过,它工作得很好,我的 table 种子。我的路线如下所示:
Route::get('test', function(){
// return JWTAuth::parseToken()->getPayload()->get('username');
Illuminate\Database\Eloquent\Model::unguard();
// \Db::table('service')->truncate();
$servicesDataFromOldDB = file_get_contents('../database/seeds/services.json');
$servicesJson = json_decode($servicesDataFromOldDB);
$services = Illuminate\Support\Collection::make($servicesJson);
$services->each(function($service){
App\Service::create([
'id' => $service->id,
'name' => $service->title,
'description' => $service->desc,
'category' => $service->cat,
'type' => $service->type,
'hours' => $service->hours,
'price' => $service->price,
'note' => $service->note,
'devdays' => $service->devdays
]);
});
Illuminate\Database\Eloquent\Model::reguard();
});
我正在从相同的路径获取相同的文件,它能够获取它但不能在种子文件中获取。我错过了什么?
编辑
dd(file_exists(app_path() . '/database/seeds/services.json'));
连这个都返回false
此外,我在种子文件中做了 dd(__DIR__)
,这是正确的路径 /var/www/html/archive/database/seeds
使用__DIR__
你可以获得当前文件所在的目录,然后使用realpath()
,你可以获得完整的合格路径文件。
realpath(__DIR__ . '../database/seeds/services.json');
这意味着您可以设置相对于您正在使用的文件目录的路径,并确保它可以在代码中的任何其他位置运行。