我有一个显示表中所有客户的客户列表
public function index(){
$customers=Customer::all();
return View::make('customer.customer-view')->with('customers',$customers);
}
添加新客户时,它会保存在db中。我想在所有客户表中显示最近添加的客户。我知道我可以再次查询数据库是否有一个很好的方法在Laravel将最近添加的客户obj添加到没有查询的客户数组中
存储客户
public function store(Request $request){
$Customer = new Customer;
$Customer->fill(Request::all());
if($Customer->save()){
// Here when it successfully inserted
}
return View::make('customer.customer-view'); //route to view all customer
}
答案 0 :(得分:1)
一些事情。
store
操作或任何持久数据的内容返回视图。在此,您要发布要保存的表单数据,然后在响应中返回一个视图 - 这是不好的做法。
您应该做的是重定向到索引页面:
public function store(Request $request){
$Customer = new Customer;
$Customer->fill(Request::all());
if($Customer->save()){
// Here when it successfully inserted
}
return redirect('url/for/index/method'); //route to view all customer
}
如果您使用命名路线等,也可以使用类似的重定向。
您如何知道填写表格的人为您提供了正确的信息,甚至填写了表格?通过这个问题超出了您的问题的范围,但如果您想要添加它,我建议您阅读docs。
在您当前的store
方法中,您只是返回与index
方法相同的视图。你说你想要归还最新的客户。
因此,您应该查看排序结果以显示最新的结果。
Eloquent提供latest()
方法来帮助您实现这一目标。
此外,您目前正在使用index
方法退回所有客户 - 一旦您开始存储一些客户,您的视图中看起来就会非常难看。
也许您想将此限制为最新的5,10或15?
要实现这一点,您只需稍微改变一下index
方法:
public function index() {
$customers = Customer::latest()->take(10)->get();
return View::make('customer.customer-view')->with('customers',$customers);
}
一气呵成,这将是你的控制器看起来像,并应该实现你的目标:
public function index() {
$customers = Customer::all();
return View::make('customer.customer-view')->with('customers',$customers);
}
public function store(Request $request){
$Customer = new Customer;
$Customer->fill(Request::all());
if($Customer->save()){
// Here when it successfully inserted
}
return redirect('url/for/index/method'); //route to view all customer
}
答案 1 :(得分:0)
正如其他用户所说, 除了存储数据外,您的商店功能不应该执行任何其他操作。
我不认为在商店功能中添加1行会降低服务器的速度,
- laravel商店功能
public function store(Request $request){
$Customer = new Customer;
$Customer->fill(Request::all());
if($Customer->save()){
// Here when it successfully inserted
$new_record_id = $Customer->id();
$newlyAddedCustomer = Customer::find($new_record_id);
return $newlyAddedCustomer;
}else{
return 'error';
}
}
- 如果您使用PHP Form post方法
,这将刷新您的页面和列表但如果您不使用PHP表单,可以使用jquery和ajax,
来完成- HTML
<ul id='my_list'>
<li>item 1</li>
<li>item 2</li>
</ul>
- AJAX
$("#buttonSave").on("click", function(){
var input1 = $("").val(); /* input1 */
var input2 = $("").val(); /* input2 */
$.ajax({
url: 'your laravel route to your store controller',
type: 'POST',
dataType: 'json',
data: { input1: input1, input: input2, _token: _token },
success: function(data){
if(data!='error'){
$("#my_list").append("<li>"+data[0].yourfield1+"</li>");
}
}
})
});