调用未定义的方法create()错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用未定义的方法create()错误相关的知识,希望对你有一定的参考价值。
我想在媒体模型中使用save_image()函数来保存我的图像。
这是我的媒体模型;
class Media extends Model
{
public function save_image($file)
{
$realname = str_slug(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME));
$extension = $file->getClientOriginalExtension();
$new_name = str_slug($realname) . "-" . time() . "." . $extension;
$file->move(public_path('uploads'), $new_name);
$image = DB::create([
'image' => $new_name,
'image_path' => "uploads/" . $new_name,
'image_alt_name' => $realname
]);
return $image;
}
}
在我的控制器;
public function storeMedia(Request $request)
{
$this->validate($request,[
'image'=> 'required|mimes:jps,png,gif,jpeg'
]);
$image=$request->file('image');
$media = new Media();
$media->save_image($image);
return response()->json([
'url'=> env('APP_URL')."/".$image->image_path,
'alt' => $image->image_alt_name,
'id' => $image->id,
]);
}
我们不得不在第一次说DB::table('media')
吗?我的意思是,我们已经在媒体模型,是必要的吗?
答案
您没有在代码中指定表名。
这是解决方案
$image = DB::table('media')->create([
'image' => $new_name,
'image_path' => "uploads/" . $new_name,
'image_alt_name' => $realname
]);
要么
$image = Media::create([
'image' => $new_name,
'image_path' => "uploads/" . $new_name,
'image_alt_name' => $realname
]);
你也可以使用$this->create
希望这可以帮助
另一答案
查询构建器没有create()
方法,因此您需要使用Eloquent:
Model::create([
'image' => $new_name,
'image_path' => "uploads/" . $new_name,
'image_alt_name' => $realname
]);
如果要使用查询构建器,可以使用insert()
方法:
DB::table('table_name')->insert([
'image' => $new_name,
'image_path' => "uploads/" . $new_name,
'image_alt_name' => $realname
]);
以上是关于调用未定义的方法create()错误的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Migration致命错误:调用未定义的方法Illuminate Database Schema Blueprint :: integer()
调用未定义的方法 Maatwebsite\Excel\Facades\Excel::create() - Laravel 5.3
“未捕获的类型错误:在 angularJS/NodeJS 中使用条带支付方法 Stripe.charges.create() 时无法读取未定义的属性‘创建’”