Reputation: 11
I am trying to insert values into my file table and I am getting a error. FatalThrowableError Call to a member function file() on null.
Inset.php Model
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 Model
<?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 Controller
<?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();
}
}
Error:
(1/1) FatalThrowableError Call to a member function file() on null
in FilesController.php (line 31) at FilesController->insert(object(Request)) at call_user_func_array(array(object(FilesController), 'insert'), array(object(Request))) in BoundMethod.php (line 29) at BoundMethod::Illuminate\Container{closure}() in BoundMethod.php (line 87) at BoundMethod::callBoundMethod(object(Application), array(object(FilesController), 'insert'), object(Closure)) in BoundMethod.php (line 31) at BoundMethod::call(object(Application), array(object(FilesController), 'insert'), array(), null) in Container.php (line 564) at Container->call(array(object(FilesController), 'insert'), array()) in RoutesRequests.php (line 373) at Application->callControllerCallable(array(object(FilesController), 'insert'), array()) in RoutesRequests.php (line 316) at Application->callControllerAction(array(true, array('uses' => 'App\Http\Controllers\FilesController@insert'), array())) in RoutesRequests.php (line 275) at Application->callActionOnArrayBasedRoute(array(true, array('uses' => 'App\Http\Controllers\FilesController@insert'), array())) in RoutesRequests.php (line 260) at Application->handleFoundRoute(array(true, array('uses' => 'App\Http\Controllers\FilesController@insert'), array())) in RoutesRequests.php (line 160) at Application->Laravel\Lumen\Concerns{closure}() in RoutesRequests.php (line 413) at Application->sendThroughPipeline(array(), object(Closure)) in RoutesRequests.php (line 166) at Application->dispatch(null) in RoutesRequests.php (line 107) at Application->run() in index.php (line 28)
Upvotes: 1
Views: 1312
Reputation: 15941
Your Code
$inset = Inset::find($request->input('inset_id'));
Is returning null that's why it is Throwing this error.
if you want to avoid error you can do this like
$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();
}
Hope this helps
Upvotes: 0