有没有办法在Laravel的create方法中获取ID

时间:2019-10-21 10:04:16

标签: laravel

我正试图将外来因素直接传递给我的create方法

在我正在从事的项目中,我有两个不同的用户。第一个是可以创造动物的农场 第二个是诊所,可以将一些诊所详细信息附加到动物上,以显示动物是否已接种疫苗。在我的诊所详细信息表中,我将动物作为外键,但是我不知道如何将该键传递给创建方法

这是我的诊所控制器

cuckoo.filesystem.file_access(/^C:\\(.*\\)?dnx\.exe$/i)

我的诊所index.blade.php

C:\

我的诊所show.blade.php 这是我想将动物ID传递给create方法的地方,但我不知道如何。 甚至我的按钮链接也不会转到创建视图

cuckoo.filesystem.file_access(/^C:\\(.*\\)?(Excel\.exe|dnx\.exe|appvlp\.exe)$/i)

诊所create.blade.php 这种看法仍然是空的

<?php

namespace App\Http\Controllers;

use App\Animal;
use App\Clinic;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class ClinicController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */

    public function __construct()
    {
        $this->middleware('auth');
    }

    public function index()
    {
        $user = Auth::user();
        $animal = Animal::all();
        return view('clinic.index', compact('user', 'animal'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @param $id
     * @return void
     */
    public function create($id)
    {
        $user = Auth::user();
        $animal = Animal::query()->findOrFail($id);
        $clinic = new Clinic();

        return view('clinic/create', compact('user', 'animal', 'clinic'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $animal = Animal::query()->findOrFail($id);
        return view('clinic.show', compact('animal'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

2 个答案:

答案 0 :(得分:0)

您可以像这样简单地向您的方法添加参数:

public function create($id, $foreignKeyId) {
    // ... to something 
}

为此,您需要将id作为隐藏输入传递。

您还可以尝试创建一个关系,这样就无需添加foreignKey作为参数。您只需使用指定的ORM模型即可访问foreign_key。

答案 1 :(得分:0)

您可以使用 insertGetId()方法来检索存储方法之后最后创建的ID。
https://laravel.com/api/5.0/Illuminate/Database/Query/Builder.html#method_insertGetId

$id = DB::table('posts')->insertGetId(
    array('title' => 'my post title', 'body' => 'my post body')
);