【问题标题】:How to select specfic id and update in Laravel?如何在 Laravel 中选择特定的 id 和更新?
【发布时间】:2020-11-07 21:49:51
【问题描述】:

我正在研究 Laravel CRUD。 Laravel 框架是 6.18.15 我想选择一条记录并更新。

这是照片库。 现在,如果我点击其中一张照片,我可以得到以下 URL

https://mywebsite.net/public/edit?id=59

但在 edit.blade.php 中出现此错误

未定义变量:id

有人可以教我正确的代码吗?

这些是当前代码

控制器已更新

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

型号

namespace App;
use Illuminate\Database\Eloquent\Model;
class ImageGallery extends Model
{
    protected $table = 'image_gallery';
    protected $fillable = ['title', 'image'];
}

【问题讨论】:

    标签: laravel laravel-routing laravel-route


    【解决方案1】:

    其实$id在这里真的是undefined,应该是$request-&gt;route('id')或者request('id')或者$_GET['id']或者$request-&gt;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$_REQUEST 超全局变量。以下内容适用于您的示例:

    $id = $_GET['id'];
    $country = $_GET['country'];
    

    在 laravel 中你可以使用 Input::get(),但 Input::get 在新版本的 laravel 中已被弃用,更喜欢 $request-&gt;input 而不是 Input::get

    $id= $request->input('id');
    $country= $request->input('country');
    

    【讨论】:

    【解决方案2】:

    它看起来像这个函数:

    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 阅读有关此方法的信息。

    【讨论】:

    • 非常感谢您对我的帮助。我使用了您的代码,然后现在出现此错误 Trying to access array offset on value of type bool (View:/edit.blade.php) 。我更新了刀片文件。你能教我我的代码有什么问题吗?
    • 在您到达@if($images-&gt;count()) 之前,您可以放置​​以下内容:{{ dd($images-&gt;get(0)) }} 并超过该值的结果吗? $image 可能是布尔值,但我想知道您认为除此之外是否还有其他问题。
    • 亲爱的@dhnwebpro 再次感谢您。我做了$dd。消息在这里 SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' (SQL: select 0 from image_gallery)
    【解决方案3】:
    public function edit(Request $request)
    {
        $id = request('id');
        $images = ImageGallery::where('id',$id)->first();
    
        return view('edit',compact('images'));
    }
    

    【讨论】:

    • 感谢您的回答。现在我收到此错误尝试访问 bool 类型值的数组偏移量。
    猜你喜欢
    • 1970-01-01
    • 2018-01-28
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多