Laravel 5从URL获取ID

时间:2015-10-21 18:08:08

标签: php database laravel-5 pass-by-reference

我有一个表格视图,我可以在其中点击一个按钮图标并重定向到另一个页面,该页面带有已被点击的行的 id 。

@foreach ($patients as $patient)
    <tr>
        <td>{{ $patient->pID }}</td>
        <td>{{ $patient->pName }}</td> 
        <td>{{ $patient->pAddress }}</td>
        <td>{{ $patient->pBday }}</td>
        <td>{{ $patient->pPhone}}</td>
        <td>{{ $patient->pEcon }}</td>
        <td>{{ $patient->pDreg }}</td>
        <td></td>
        <td>
            <a href="{{ URL::to('visit/'.$patient->pID) }}">
                <img src="../images/viewvisit.png" style="width:30px; height:30px;">
            </a>
        </td>
        <td>
            <a href="{{ URL::to('addeditvisit/'.$patient->pID) }}">
                <img src="../images/visit.png" style="width:30px; height:30px;">
            </a>
        </td>
        <td>
            <a href="{{ URL::to('editpatient/'.$patient->pID) }}">
                <img src="../images/update.png" style="width:30px; height:30px;">
            </a>
        </td>
        <td>
            <a href="{{ URL::to('deletepatient/'.$patient->pID) }}">
                <img src="../images/delete.png" style="width:30px; height:30px;">
            </a>
        </td>
    </tr>
@endforeach 

我想要的是从网址获取 id 并将其放入变量中,以便我可以将其用于其他页面。

我目前仍然坚持使用此控制器功能。

public function index(Request $request) {   

    $doctors = Doctor::where('dStatus', 0)
        ->lists('dName', 'dID');
    $beds = Bed::where('bStatus', 0)
        ->lists('bName', 'bID');
    $patient = Patient::patient();
    // $uri = $request->path('patient');

    return View::make('pages.addeditvisit', [
        'doctors'=>$doctors,
        'beds'=>$beds,
        'patient'=>$patient->pID
    ]);
}

7 个答案:

答案 0 :(得分:15)

基本上,当您定义路线时,您使用的是名为 route parameters 的东西,类似这样的

Route::get('/visit/{id}', 'Controller@someMethod');

此ID将作为处理程序功能中的参数提供,

public function someMethod($id) {
    // you have the id here
}

答案 1 :(得分:12)

或者只是在刀片中使用它

{{request()->route('id')}}

答案 2 :(得分:3)

这已经很晚了。但为了像我这样的其他人的利益;

如果您不必像上面的答案所示的方法那样做,从Laravel 5.0开始(不确定以前的版本),你可以做到

$request->route('id');

返回路由上id参数的值。

答案 3 :(得分:1)

诀窍是在包含id的路由中声明url的结构,例如:

// {{ URL::to('editpatient/'.$patient->pID) }}
Route::get('editpatient/{patientId}', 'MyController@index');

然后,只需在控制器的函数中注入id:

public function index($patientId){
    // $patientId is the variable from url
}

答案 4 :(得分:0)

Route::get('post/user/{id}','ProductController@allpost')->where('id', '[0-9]+');

Controller

public function allpost($id)
    {
        $products = Product::where('uploadby', $id)->orderBy('created_at','desc')->paginate(5); <br>
        return view('product.user_product')->with('products', $products);
    }

答案 5 :(得分:0)

简单示例:

Product

答案 6 :(得分:0)

有关如何从路线获取参数的信息,请参阅回答的问题。但是,如果您偶然发现了这个旧的Laravel线程,寻找如何通过其ID检索模型,则最简单的方法是在控制器的request参数中实例化该模型:

Route::get('/retrieve_product/{product}', 'SearchController@getProduct');

然后在您的控制器中,您只需要:

use App\Product;

class SearchController extends Controller
{
    public function getProduct( Product $product ) {
        return $product;
    }
}

就是这样。找不到,没有地方,没有得到,没有第一位。

因此,在此示例中,如果您访问/retrieve_product/1,则第一款产品将退还给您。