簡體   English   中英

我如何更新沒有ID的表格

[英]How can i update table without id

我的客戶希望使他的徽標在網站上富有活力。 因此,在儀表板中,我在管理儀表板中包含一個字段名稱“設置”,他可以在其中更改其徽標。 為此,我需要更新不帶id的設置表,因為最初數據庫中沒有任何數據。 要更新表而不創建需要“ id”。因此,我面臨一個問題。 如果有其他替代方法可以使徽標在網頁中動態化,請建議我。

<form action="{{route('updatesettings',['id'=>$settings->id])}}" method="post" enctype="multipart/form-data">
    {{csrf_field()}}
    <div class="form-group">
        <label for="changelogo">CHANGE LOGO</label><br>
        <input type="file" name="image" class="form-control ">
    </div>
    <div class="form-group">
        <label for="changelogo">CHANGE Image for About Home page</label><br>
        <input type="file" name="image1" class="form-control ">
    </div>
    <div class="form-group">
        <label for="changelogo">CHANGE First Image for About page</label><br>
        <input type="file" name="image2" class="form-control ">
    </div>
    <div class="form-group">
        <label for="changelogo">CHANGE Second Image for About page</label><br>
        <input type="file" name="image3" class="form-control ">
    </div>
    <div class="form-group">
        <label for="about">About</label>
        <textarea name="about" class="form-control"></textarea>
    </div>
    <div class="form-group">
        <button class="btn btn-primary">update</button>
    </div>
</form>

控制者

public function updatesettings(Request $request)
    {

        $data['about'] = $request->about;
        if($request->hasFile('image'))
        {
                $image = $request->file('image');
                $ext=$image->getClientOriginalExtension();
                $imageName = md5(microtime()).'.'.$ext;
                $uploadPath = public_path('uploaded/');
                if($image->move($uploadPath,$imageName))
                {
                    $data['image'] = $imageName;
                }
        }
        if($request->hasFile('image1'))
        {
                $image = $request->file('image1');
                $ext=$image->getClientOriginalExtension();
                $imageName = md5(microtime()).'.'.$ext;
                $uploadPath = public_path('uploaded/');
                if($image->move($uploadPath,$imageName))
                {
                    $data['image1'] = $imageName;
                }
        }
        if($request->hasFile('image2'))
        {
                $image = $request->file('image2');
                $ext=$image->getClientOriginalExtension();
                $imageName = md5(microtime()).'.'.$ext;
                $uploadPath = public_path('uploaded/');
                if($image->move($uploadPath,$imageName))
                {
                    $data['image2'] = $imageName;
                }
        }
        if($request->hasFile('image3'))
        {
                $image = $request->file('image3');
                $ext=$image->getClientOriginalExtension();
                $imageName = md5(microtime()).'.'.$ext;
                $uploadPath = public_path('uploaded/');
                if($image->move($uploadPath,$imageName))
                {
                    $data['image3'] = $imageName;
                }
        }
        if(Setting::first()->update($data))
        {
            return redirect()->route('showsettings');
        }
        return redirect()->route('showsettings');

    }

嘗試獲取非對象的屬性“ id”(視圖:C:\\ xampp \\ htdocs \\ odan \\ resources \\ views \\ admin \\ modules \\ settings \\ setting.blade.php)

正如您所說的,最初沒有數據權。 那為什么要從form傳遞id呢? 從您的問題來看, settings表中總會有一個條目。

因此,建立一個沒有id的簡單route ,並通過設置Setting::first() // instially empty獲取來顯示數據

然后在命中提交更新您通過建模

$setting = Setting::first();
$setting->myfields = $fileds;
$setting->save(); 

而已。

即使您可以使用laravel的updateOrCreate方法

您需要為其保留默認數據。 制作數據庫表以獲取徽標。 最初,您可以保留“ defaultimg”,並且當用戶想要對其進行更新時,請獲取該行ID並對其進行更新,如果您只有1個徽標,則請進行驗證以確保用戶不能在該表中添加多個數據(“徽標”表) )。 希望你能得到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM