为了账号安全,请及时绑定邮箱和手机立即绑定

无法从 DB、Laravel 获取行

无法从 DB、Laravel 获取行

PHP
沧海一幻觉 2023-09-08 18:21:41
我想将表中的一行的值设置为第二个表及其中的行。我开始用这个来制作控制器方法,因为我试图首先从视图中获取值:public function duplicate(Request $request, Proform $proform){    var_dump($proform);    var_dump($proform->id);    $proform = DB::table('proforms')->where('id', $proform->id)->first();    var_dump($proform);}我从视图和这条线上获取值(第一) var_dump($proform);但不知道为什么我在这个(第二)上得到空值var_dump($proform->id);在那之后$proform = DB::table('proforms')->where('id', $proform->id)->first();在此(第三个)上为空var_dump($proform);/home/laravel/web/laravel.swt101.eu/public_html/abonamenty/app/Http/Controllers/ProformController.php:33:null/home/laravel/web/laravel.swt101.eu/public_html/abonamenty/app/Http/Controllers/ProformController.php:37:null首先,我通过按重复按钮从此视图中获取值:   @extends('layouts.app')@section('content')    <div class="row">        <div class="col-lg-12 margin-tb">            <div class="pull-left">                <h2>Szczegóły abonamentu</h2>            </div>            <div class="pull-right">                <a class="btn btn-primary" href="{{ route('proforms.index') }}"> Wstecz</a>            </div>        </div>    </div><div class="col-md-4"><form action="/duplicate" method="get"><div class="input-group"><input type="button" value="$proform->id" name="duplicate" class="form-control"><span class="input-group-prepend"><button type="submit" class="btn btn-primary">Wystaw fakturę</button></span></div></form></div>       <div class="row">        <div class="col-xs-12 col-sm-12 col-md-12">            <div class="form-group">                <strong>Data wystawienia:</strong>                {{ $proform->proformdate }}            </div>        </div>        <div class="col-xs-12 col-sm-12 col-md-12">            <div class="form-group">                <strong>Kontrahent:</strong>                {{ $proform->user_id }}            </div>        </div>
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

您的路由名称应与要注入的模型的模型匹配。在这种情况下,路由应该有一个proform参数。在您的情况下,模型未绑定并返回空实例。


如果它是重复的@Kurt说你的路线应该是这样的


Route::get('/duplicate/{proform?}', 'ProformController@duplicate');

在这种情况下它应该是可选的。


但我建议你像下面这样改变它。为重复的帖子创建一个帖子路由,并使用获取路由来显示表单


Route::get('/duplicate/{proform}', 'ProformController@duplicateForm')->name('proforms.duplicateForm');

Route::post('/duplicate', 'ProformController@duplicatePost')->name('proforms.duplicate');

控制器


public function __construct(Proform $proform)

{

   $this->proform = $proform;

}


public function duplicateForm(Request $request, Proform $proform)

{

    return view('the form view here', ['proform' => $proform]);

}



public function duplicatePost(Request $request)

{

    $proform = $this->proform->findOrFail($request->duplicate);


    //something like this

    $duplicated = $this->proform->create($proform->toArray());


    dump($duplicated);

}

重复表格


<div class="col-md-4">

<form action="{{ route('proforms.duplicate') }}" method="POST">

@csrf


<div class="input-group">

<input type="button" value="{{$proform->id}}" name="duplicate" class="form-control">

<span class="input-group-prepend">

<button type="submit" class="btn btn-primary">Wystaw fakturę</button>

</span>

</div>

</form>

</div>   

此外,在 Laravel 中,您可以使用以下函数来代替var_dump()


dd() //die and dump, same as var_dump();exit;

dump() //dump,  same as var_dump();


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信