Laravel LAVEL基于id在页面上显示数据

Laravel LAVEL基于id在页面上显示数据,laravel,laravel-5,blade,laravel-blade,Laravel,Laravel 5,Blade,Laravel Blade,我有一个页面,显示在数据库中检索到的企业名称链接,如下所示: 控制器: public function viewBusiness() { // Return our "website" object $business = Business::all(); // Pass the contents of the "html" property to the view return view('viewBusiness', ['business' => $business]); } fun

我有一个页面,显示在数据库中检索到的企业名称链接,如下所示:

控制器:

public function viewBusiness() {
// Return our "website" object
$business = Business::all();
// Pass the contents of the "html" property to the view
return view('viewBusiness', ['business' => $business]);
}
function displayBusiness() {
    $business = Business::all();
    $address = Address::all();
    return view('displayBusiness', ['business' => $business, 'address' => $address]);
}
视图:

然后,我添加了一个功能,用户点击一个链接,它被带到一个页面,该页面显示该特定业务的所有数据,但它显示除所有业务之外的所有数据

控制器:

public function viewBusiness() {
// Return our "website" object
$business = Business::all();
// Pass the contents of the "html" property to the view
return view('viewBusiness', ['business' => $business]);
}
function displayBusiness() {
    $business = Business::all();
    $address = Address::all();
    return view('displayBusiness', ['business' => $business, 'address' => $address]);
}
视图:

现在的问题是,如何修改此代码,以便只显示与business->name或business->id匹配的业务。(我猜当用户点击一个名字时,这个名字就会被取下来

另一个问题是如何限制url,以便如果localhost/business/{name}不等于数据库中的任何business->name,则返回错误?此时,无论您输入什么,它都会显示页面


谢谢!

路由参数在控制器函数中作为参数提供。现在您可以使用此函数生成查询。如果您的查询没有返回任何结果,您可以将用户发送回业务概览

function displayBusiness($name) {
    $business = Business::where('name', $name)->orWhere('id', $name)->first();
    if ($business === null)
    {
        // No business with this name or id found.
        // Redirect to businesses list page.
    }

    $address = Address::all();
    return view('displayBusiness', ['business' => $business, 'address' => $address]);
}

路由参数作为参数在控制器函数中可用。现在,您可以使用此函数生成查询。如果查询未返回任何结果,则可以将用户发送回业务概览

function displayBusiness($name) {
    $business = Business::where('name', $name)->orWhere('id', $name)->first();
    if ($business === null)
    {
        // No business with this name or id found.
        // Redirect to businesses list page.
    }

    $address = Address::all();
    return view('displayBusiness', ['business' => $business, 'address' => $address]);
}

我不知道我是否理解这个问题,但这可能是解决问题的开始

第一视图:

@extends('master') @section('title', 'Live Oldham')
@section('content')
            @foreach ($business as $businesses)
        <a target="_blank" href="{{ url('business/' . $businesses->id) }}"> {{($businesses->name) }}
        </a> @endforeach       
@endsection
第二种观点:

    <p>{{$business->name}}</p>
    <p>{{$business->email}}</p>
    <p>{{$address->firstline_address}}</p>
    <p>{{$address->secondline_address}}</p>
    <p>{{$address->town}}</p>
    <p>{{$address->city}}</p>
    <p>{{$address->postcode}}</p>
    <p>{{$address->telephone}}</p>

我不知道我是否理解这个问题,但这可能是解决问题的开始

第一视图:

@extends('master') @section('title', 'Live Oldham')
@section('content')
            @foreach ($business as $businesses)
        <a target="_blank" href="{{ url('business/' . $businesses->id) }}"> {{($businesses->name) }}
        </a> @endforeach       
@endsection
第二种观点:

    <p>{{$business->name}}</p>
    <p>{{$business->email}}</p>
    <p>{{$address->firstline_address}}</p>
    <p>{{$address->secondline_address}}</p>
    <p>{{$address->town}}</p>
    <p>{{$address->city}}</p>
    <p>{{$address->postcode}}</p>
    <p>{{$address->telephone}}</p>

关于第二个问题,您没有在displayBusiness函数中使用任何参数,因此它将返回您所输入的所有数据关于第二个问题,您没有在displayBusiness函数中使用任何参数,因此它将返回您所输入的所有数据:尝试获取非objectI的属性:尝试获取n的属性在Objects上这是可行的,但是我想在url中显示企业名称而不是id,但是我希望搜索使用企业id,这可能吗?好的,在这种情况下,您需要使用str_slug($name)方法生成名称的slug然后,用$slug替换$id并用
$business=business::where('slug','=',$slug)->first();
str_slug方法应该放在哪里?我需要安装什么才能使用它吗?在控制器中只需添加
$business->slug=str_slug($name);
并在您的表业务中创建列slug,str_slug方法为您想要的内容(名称、描述)生成一个语义URL不需要添加任何其他内容?这将更改url?这是可行的,但我想在url中显示企业名称而不是id,但是我希望搜索使用企业id,这是可能的吗?好的,在这种情况下,您需要使用str_slug($name)方法生成名称的slug然后,用$slug替换$id并用
$business=business::where('slug','=',$slug)->first();
str_slug方法应该放在哪里?我需要安装什么才能使用它吗?在控制器中只需添加
$business->slug=str_slug($name);
并在您的表业务中创建列slug,str_slug方法为您想要的内容(名称、描述)生成一个语义URL,而不需要添加任何其他内容?然后会更改URL吗?
Route::get('business/{id}', 'BusinessController@displayBusiness')->name('displayBusiness');