laravel 根据id在页面上显示数据
laravel display data on a page based on id
我有一个页面显示 links,其中包含在数据库中检索到的企业名称,如下所示:
控制器:
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]);
}
查看:
@extends('master') @section('title', 'Live Oldham') @section('content')
@section('content')
@foreach ($business as $businesses)
<a target="_blank" href="{{ url('business/' . $businesses->name) }}"> {{($businesses->name) }}
</a> @endforeach
@endsection
路线:
Route::get('business/list', 'BusinessController@viewBusiness')->name('viewBusiness');
然后我添加了一个功能,用户点击 link,它会被带到一个显示该特定业务的所有数据的页面,但是它显示所有数据,但不是所有业务。
控制器:
function displayBusiness() {
$business = Business::all();
$address = Address::all();
return view('displayBusiness', ['business' => $business, 'address' => $address]);
}
查看:
@foreach ($business as $businesses)
<p>{{$businesses->name}}</p>
<p>{{$businesses->email}}</p>
@endforeach
@foreach ($address as $addresses)
<p>{{$addresses->firstline_address}}</p>
<p>{{$addresses->secondline_address}}</p>
<p>{{$addresses->town}}</p>
<p>{{$addresses->city}}</p>
<p>{{$addresses->postcode}}</p>
<p>{{$addresses->telephone}}</p>
@endforeach
路线:
Route::get('business/{name}', 'BusinessController@displayBusiness')->name('displayBusiness');
现在的问题是,如何修改此代码以便仅显示匹配 bussiness->name 或 business->id 的企业。 (我想当用户点击一个名字时,名字就被取走了。
另外一个问题是如何限制url使得if localhost/business/{name} is not equal to any business->name in the database returns错误?目前,无论您输入什么,它都会显示该页面。
谢谢!
路由参数在控制器函数中作为参数可用。现在您可以使用此函数构建查询。如果您的查询没有 return 任何结果,您可以将用户发送回业务概览。
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
第二个控制器:
function displayBusiness($id) {
$business = Business::find($id);
$address = Address::find($id);
return view('displayBusiness', compact('business', 'address'));
}
第二个视图:
<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>
第二条路线:
Route::get('business/{id}', 'BusinessController@displayBusiness')->name('displayBusiness');
我有一个页面显示 links,其中包含在数据库中检索到的企业名称,如下所示:
控制器:
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]);
}
查看:
@extends('master') @section('title', 'Live Oldham') @section('content')
@section('content')
@foreach ($business as $businesses)
<a target="_blank" href="{{ url('business/' . $businesses->name) }}"> {{($businesses->name) }}
</a> @endforeach
@endsection
路线:
Route::get('business/list', 'BusinessController@viewBusiness')->name('viewBusiness');
然后我添加了一个功能,用户点击 link,它会被带到一个显示该特定业务的所有数据的页面,但是它显示所有数据,但不是所有业务。
控制器:
function displayBusiness() {
$business = Business::all();
$address = Address::all();
return view('displayBusiness', ['business' => $business, 'address' => $address]);
}
查看:
@foreach ($business as $businesses)
<p>{{$businesses->name}}</p>
<p>{{$businesses->email}}</p>
@endforeach
@foreach ($address as $addresses)
<p>{{$addresses->firstline_address}}</p>
<p>{{$addresses->secondline_address}}</p>
<p>{{$addresses->town}}</p>
<p>{{$addresses->city}}</p>
<p>{{$addresses->postcode}}</p>
<p>{{$addresses->telephone}}</p>
@endforeach
路线:
Route::get('business/{name}', 'BusinessController@displayBusiness')->name('displayBusiness');
现在的问题是,如何修改此代码以便仅显示匹配 bussiness->name 或 business->id 的企业。 (我想当用户点击一个名字时,名字就被取走了。
另外一个问题是如何限制url使得if localhost/business/{name} is not equal to any business->name in the database returns错误?目前,无论您输入什么,它都会显示该页面。
谢谢!
路由参数在控制器函数中作为参数可用。现在您可以使用此函数构建查询。如果您的查询没有 return 任何结果,您可以将用户发送回业务概览。
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
第二个控制器:
function displayBusiness($id) {
$business = Business::find($id);
$address = Address::find($id);
return view('displayBusiness', compact('business', 'address'));
}
第二个视图:
<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>
第二条路线:
Route::get('business/{id}', 'BusinessController@displayBusiness')->name('displayBusiness');