Laravel 5 从 URL 获取 ID

Posted

技术标签:

【中文标题】Laravel 5 从 URL 获取 ID【英文标题】:Laravel 5 getting ID from URL 【发布时间】:2016-01-20 20:43:39 【问题描述】:

我有一个表格视图,我可以在其中单击按钮图标并重定向到带有已单击行的 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 

我想要的是从 URL 中获取 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
    ]);

【问题讨论】:

你是如何定义你的路线的? 【参考方案1】:

这太晚了。但是为了像我这样的其他人的利益;

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

$request->route('id');

返回路由上id参数的值。

【讨论】:

【参考方案2】:

或者只是在 Blade 中使用它: request()-&gt;route('id')

【讨论】:

【参考方案3】:

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

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

此 id 将在您的处理程序函数中作为参数提供,

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

【讨论】:

如果您不在该页面上怎么办?【参考方案4】:

简单示例:

as link=>   example.com/user/1

as rout=> Route::get('user/id', 'UserController@user');

as UserController function 

public function user($id)

    echo $id;



output => 1

【讨论】:

【参考方案5】:

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

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

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

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

【讨论】:

【参考方案6】:
Route::get('post/user/id','ProductController@allpost')->where('id', '[0-9]+');

控制器

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

【讨论】:

【参考方案7】:

请参阅已回答的问题,了解如何从路由中获取参数。但是,如果你偶然发现了这个旧的 Laravel 线程来寻找如何通过其 ID 检索模型,最简单的方法是在控制器的请求参数中实例化模型:

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

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

use App\Product;

class SearchController extends Controller

    public function getProduct( Product $product ) 
        return $product;
    

就是这样。没有找到,没有在哪里,没有得到,没有第一等。

因此,在此示例中,如果您访问 /retrieve_product/1,则第一个产品将返回给您。

【讨论】:

以上是关于Laravel 5 从 URL 获取 ID的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5如何通过控制器的登录方法从url获取参数

使用 Filesystem Laravel 5.2 从 amazon s3 获取文件的签名 URL

Laravel 5.4 从请求对象重定向获取方法

使用 Blade 在 Laravel 5 中获取当前 URL 的最后一部分

如何在 laravel 5 中使用 Storage 门面获取文件 URL?

无法从 URL Laravel 获取 ID