如何 select 指定 id 并在 Laravel 中更新?
How to select specfic id and update in Laravel?
我正在研究 Laravel CRUD。
Laravel 框架是 6.18.15
我要select的一个记录和更新。
这是照片库。
现在,如果我单击其中一张照片,我可以看到下面的 URL
https://mywebsite.net/public/edit?id=59
但是在 edit.blade.php 我得到了这个错误
Undefined variable: id
有人可以教我正确的代码吗?
这些是当前代码
Controller UPDATED
public function edit(Request $request)
{
$images = ImageGallery::find($id);
return view('edit',compact('images'));
}
public function editpcs(Request $request)
{
$this->validate($request, [
'title' => 'required',
'image' => 'required|mimes:jpeg,jpg'
]);
$input['image'] = time().'.'.$request->image->getClientOriginalExtension();
if($request->hasFile('image')) {
$image = $request->file('image');
$filename = time().'.'.$request->image->getClientOriginalExtension();
$image_resize = Image::make($image->getRealPath());
$image_resize->resize(1280, null, function ($image) {$image->aspectRatio();});
$image_resize->save(public_path('images/ServiceImages/' .$filename));
}
$request->image->move(public_path('images'), $input['image']);
$input['title'] = $request->title;
// ImageGallery::update($input);
$update = DB::table('image_gallery')->where('id', $id)->update( [ 'title' => $request->title, 'image' => $request->image]);
return view('edit',compact('images'))->with('sucess','sucessfully updated');
}
web.php
//edit view
Route::get('edit', 'ImageGalleryController@edit');
Route::post('edit', 'ImageGalleryController@edit');
//edit procces
Route::get('editpcs', 'ImageGalleryController@editpcs');
Route::post('editpcs', 'ImageGalleryController@editpcs');
更新
@if($images->count())
@foreach($images as $image)
<div class='text-center'>
<small class='text-muted'>{{$image['id']}}/ {{$image['title']}} </small>
</div>
@endforeach
@endif
MODEL
namespace App;
use Illuminate\Database\Eloquent\Model;
class ImageGallery extends Model
{
protected $table = 'image_gallery';
protected $fillable = ['title', 'image'];
}
我觉得像这个函数:
public function edit(Request $request)
{
$images = ImageGallery::find($id);
return view('edit',compact('images'));
}
应该是这样的吧?
public function edit(Request $request)
{
$id = $request->input('id', null);
$images = ImageGallery::find($id);
return view('edit',compact('images'));
}
实际上,$id
在您尝试将其传递给 find()
方法之前似乎未定义。但是根据您的 URL 它在 $request
对象中。所以你需要从那里得到它并进入功能。您可以在 the docs.
中阅读有关此方法的信息
其实$id
在这里真的是undefined,应该是$request->route('id')
or request('id')
or $_GET['id']
or $request->input('id')
:
public function edit(Request $request)
{
$id = request('id');
$images = ImageGallery::findOrFail($id); // use findOrFail() id not exist in table, it throw a 404 error
return view('edit',compact('images'));
}
看看 $_GET and $_REQUEST 超全局变量。以下内容适用于您的示例:
$id = $_GET['id'];
$country = $_GET['country'];
在laravel中你可以使用Input::get()
,但是Input::get
在较新版本的laravel中被弃用了,更喜欢$request->input
而不是Input::get
:
$id= $request->input('id');
$country= $request->input('country');
public function edit(Request $request)
{
$id = request('id');
$images = ImageGallery::where('id',$id)->first();
return view('edit',compact('images'));
}
我正在研究 Laravel CRUD。 Laravel 框架是 6.18.15 我要select的一个记录和更新。
这是照片库。 现在,如果我单击其中一张照片,我可以看到下面的 URL
https://mywebsite.net/public/edit?id=59
但是在 edit.blade.php 我得到了这个错误
Undefined variable: id
有人可以教我正确的代码吗?
这些是当前代码
Controller UPDATED
public function edit(Request $request)
{
$images = ImageGallery::find($id);
return view('edit',compact('images'));
}
public function editpcs(Request $request)
{
$this->validate($request, [
'title' => 'required',
'image' => 'required|mimes:jpeg,jpg'
]);
$input['image'] = time().'.'.$request->image->getClientOriginalExtension();
if($request->hasFile('image')) {
$image = $request->file('image');
$filename = time().'.'.$request->image->getClientOriginalExtension();
$image_resize = Image::make($image->getRealPath());
$image_resize->resize(1280, null, function ($image) {$image->aspectRatio();});
$image_resize->save(public_path('images/ServiceImages/' .$filename));
}
$request->image->move(public_path('images'), $input['image']);
$input['title'] = $request->title;
// ImageGallery::update($input);
$update = DB::table('image_gallery')->where('id', $id)->update( [ 'title' => $request->title, 'image' => $request->image]);
return view('edit',compact('images'))->with('sucess','sucessfully updated');
}
web.php
//edit view
Route::get('edit', 'ImageGalleryController@edit');
Route::post('edit', 'ImageGalleryController@edit');
//edit procces
Route::get('editpcs', 'ImageGalleryController@editpcs');
Route::post('editpcs', 'ImageGalleryController@editpcs');
更新
@if($images->count())
@foreach($images as $image)
<div class='text-center'>
<small class='text-muted'>{{$image['id']}}/ {{$image['title']}} </small>
</div>
@endforeach
@endif
MODEL
namespace App;
use Illuminate\Database\Eloquent\Model;
class ImageGallery extends Model
{
protected $table = 'image_gallery';
protected $fillable = ['title', 'image'];
}
我觉得像这个函数:
public function edit(Request $request)
{
$images = ImageGallery::find($id);
return view('edit',compact('images'));
}
应该是这样的吧?
public function edit(Request $request)
{
$id = $request->input('id', null);
$images = ImageGallery::find($id);
return view('edit',compact('images'));
}
实际上,$id
在您尝试将其传递给 find()
方法之前似乎未定义。但是根据您的 URL 它在 $request
对象中。所以你需要从那里得到它并进入功能。您可以在 the docs.
其实$id
在这里真的是undefined,应该是$request->route('id')
or request('id')
or $_GET['id']
or $request->input('id')
:
public function edit(Request $request)
{
$id = request('id');
$images = ImageGallery::findOrFail($id); // use findOrFail() id not exist in table, it throw a 404 error
return view('edit',compact('images'));
}
看看 $_GET and $_REQUEST 超全局变量。以下内容适用于您的示例:
$id = $_GET['id'];
$country = $_GET['country'];
在laravel中你可以使用Input::get()
,但是Input::get
在较新版本的laravel中被弃用了,更喜欢$request->input
而不是Input::get
:
$id= $request->input('id');
$country= $request->input('country');
public function edit(Request $request)
{
$id = request('id');
$images = ImageGallery::where('id',$id)->first();
return view('edit',compact('images'));
}