猿问

无法从 DB、Laravel 获取行

我想将表中的一行的值设置为第二个表及其中的行。我开始用这个来制作控制器方法,因为我试图首先从视图中获取值:


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>



沧海一幻觉
浏览 86回答 1
1回答

白衣非少年

您的路由名称应与要注入的模型的模型匹配。在这种情况下,路由应该有一个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){&nbsp; &nbsp;$this->proform = $proform;}public function duplicateForm(Request $request, Proform $proform){&nbsp; &nbsp; return view('the form view here', ['proform' => $proform]);}public function duplicatePost(Request $request){&nbsp; &nbsp; $proform = $this->proform->findOrFail($request->duplicate);&nbsp; &nbsp; //something like this&nbsp; &nbsp; $duplicated = $this->proform->create($proform->toArray());&nbsp; &nbsp; 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>&nbsp; &nbsp;此外,在 Laravel 中,您可以使用以下函数来代替var_dump()dd() //die and dump, same as var_dump();exit;dump() //dump,&nbsp; same as var_dump();
随时随地看视频慕课网APP
我要回答