【问题标题】:isset and GET with Laravel 4isset 和 GET 与 Laravel 4
【发布时间】:2014-04-10 20:04:06
【问题描述】:

我正在使用 Laravel。试图在下面计算出最佳转换。我会使用查询生成器还是 eloquent,我应该在哪里集成代码(视图、控制器、模型),这是我正常执行的方式:

HTML - 使用 /sweden 或 /stockholm 获取记录 - (.htaccess url)

<a href="retailers/country/sweden">Sweden</a>
<a href="retailers/city/stockholm">Stockholm</a>

PHP - 获取与这些记录相关的数据

if (isset($_GET['country']) || isset($_GET['city'])) 
{   
$country = $_GET['country'];
$store = $_GET['city'];
$stmt = $db->prepare("SELECT * from table WHERE country = ? or city = ?");
$stmt->execute(array($country, $city));
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) :

//output stuff

endwhile

} else { //do something else }

这是我当前的 Laravel 模式的外观:

型号:

class DataListings extends Eloquent {
    public $table ='database';
}

控制器:

public function data() {
return View::make('data')
->with('table', DataListings::all())
}

这是我的观点以及我如何假设我会将这些放在一起,这就是我感到困惑的地方。什么去哪里,if (isset() 是在我的控制器、模型还是视图中?我使用查询生成器还是 elequent?如果我能得到一个关于如何转换上述内容的例子,那就太好了。

@if 

@foreach($table as $data) // this here is my while :
{{ $data->country }}, etc etc
@endforeach

@else
//do something else
@endif

谢谢

【问题讨论】:

  • 不要使用 $_GET 超全局变量,因为 Laravel 提供了访问请求参数的接口。使用Input::get('country');Input::get('city'); 如果要检查它们是否已设置,请使用Input::has('country'); laravel.com/docs/requests
  • 都是SELECT和查询,看我上面的例子。我只需要知道如何将上面的内容转换为 Laravel,你能给我一个例子吗,使用上面的模板等。
  • 啊,我的错。我以为代码已经在 Laravel 中了。也就是说,如果你将它转换为 Laravel,最好使用 Input 来访问 $_GET、$_POST、$_FILES 等中的值,所以我仍然推荐它;)

标签: php laravel laravel-4 eloquent blade


【解决方案1】:

在 Laravel 中比在纯 PHP 中更容易,您只需创建一个路由来处理该请求,而不必直接处理超全局 $_GET:

Route::get('retailers/{region}/{name}', function($region, $name) {

    $query = Table::newQuery();

    if ($region == 'country')
    {
        $query->where('country', $name);
    }
    else

    if ($region == 'city')
    {
        $query->where('city', $name);
    }

    return View::make('retailers.show')->with('table' => $query->get());

});

并且在 URL 没有区域和名称的情况下,您可以有一个备用路由来获取它:

Route::get('retailers', function() {

    return View::make('retailers.index');

});

【讨论】:

  • 谢谢,正是我想要的!
猜你喜欢
  • 1970-01-01
  • 2013-11-08
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多