Lumen - FatalThrowableError 在 null 上调用成员函数 file()
Posted
技术标签:
【中文标题】Lumen - FatalThrowableError 在 null 上调用成员函数 file()【英文标题】:Lumen - FatalThrowableError Call to a member function file() on null 【发布时间】:2018-08-08 10:48:02 【问题描述】:我正在尝试将值插入到我的文件表中,但出现错误。 FatalThrowableError 在 null 上调用成员函数 file()。
Inset.php 模型
namespace App;
use Illuminate\Database\Eloquent\Model;
class Inset extends Model
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'insets';
public function file()
return $this->hasMany('App\File');
File.php 模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class File extends Model
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'files';
protected $fillable = ['file_name','file_content', 'insets_post'];
public $timestamps = false;
public function inpost()
return $this->belongsTo('App\Inpost');
FilesController.php 控制器
<?php
/**
* Created by PhpStorm.
* User: Kacper
* Date: 28.02.2018
* Time: 14:00
*/
namespace App\Http\Controllers;
use App\File;
use App\Inset;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
class FilesController
public function showAll(Request $request)
return File::all();
public function show($ID_inset)
return File::findOrFail($ID_inset);
public function insert(Request $request)
$inset = Inset::find($request->input('inset_id'));
$file =$inset ->file()->create([
'file_name' => $request->input('file_name'),
'file_content' => Crypt::encrypt($request->input('file_content'))
]);
$file->save();
错误:
(1/1) FatalThrowableError 在 null 上调用成员函数 file()
在 FilesController.php(第 31 行)中 文件控制器->插入(对象(请求))在 call_user_func_array(array(object(FilesController), 'insert'), BoundMethod.php(第 29 行)中的数组(对象(请求))) BoundMethod::Illuminate\Containerclosure() 在 BoundMethod.php (行 87) 在 BoundMethod::callBoundMethod(object(Application), 数组(对象(FilesController),“插入”),对象(闭包)) BoundMethod.php(第 31 行)在 BoundMethod::call(object(Application), 数组(对象(文件控制器),“插入”),数组(),空)在 Container.php(第 564 行)位于 容器->调用(array(object(FilesController), 'insert'), array()) in RoutesRequests.php(第 373 行)位于 应用程序->callControllerCallable(array(object(FilesController), 'insert'), array()) 在 RoutesRequests.php(第 316 行)中 应用程序->callControllerAction(array(true, array('uses' => 'App\Http\Controllers\FilesController@insert'), array())) 在 RoutesRequests.php(第 275 行)位于 应用程序->callActionOnArrayBasedRoute(array(true, array('uses' => 'App\Http\Controllers\FilesController@insert'), array())) 在 RoutesRequests.php(第 260 行)位于 应用程序->handleFoundRoute(array(true, array('uses' => 'App\Http\Controllers\FilesController@insert'), array())) 在 RoutesRequests.php(第 160 行)位于 RoutesRequests.php 中的应用程序->Laravel\Lumen\Concernsclosure() (第 413 行)在 Application->sendThroughPipeline(array(), RoutesRequests.php(第 166 行)中的 object(Closure)) RoutesRequests.php(第 107 行)中的 Application->dispatch(null) index.php 中的 Application->run()(第 28 行)
【问题讨论】:
在执行file
函数之前,你必须检查$inset
是否为空。
感谢它的工作:)
【参考方案1】:
你的代码
$inset = Inset::find($request->input('inset_id'));
返回 null 这就是引发此错误的原因。
如果你想避免错误,你可以这样做
$inset = Inset::find($request->input('inset_id'));
if($inset)
$file =$inset ->file()->create([
'file_name' => $request->input('file_name'),
'file_content' => Crypt::encrypt($request->input('file_content'))
]);
$file->save();
希望对你有帮助
【讨论】:
以上是关于Lumen - FatalThrowableError 在 null 上调用成员函数 file()的主要内容,如果未能解决你的问题,请参考以下文章
Lumen:刚刚安装了lumen,无法从公用文件夹中获取资源
Lumen Passport (dustrio/lumen-passport) - 使登录变得可访问
在没有 Lumen/Laravel 会话的情况下使用 Lumen + Dingo + JWT
Lumen:在 routes.php 第 17 行:升级到 5.5 后调用未定义的方法 Laravel\Lumen\Application::post()。*