Laravel函数具有两个参数

时间:2018-08-22 19:22:02

标签: php laravel

我的控制器

public function showSpecificSite($site_id){

$reports = Report::whereHas('site', function($query) use($site_id) {
    $query->where('site_id', $site_id);
})->get(['email_date', 'url', 'recipient']);

$siteName = Site::find($site_id)->site_name;

  return view('newsite', compact('site_id', 'siteName', 'reports'));
}

public function showMonthlyReport($site_id, $report_id)
{

$site = Report::whereHas('site', function($query) use($site_id) {
    $query->where('site_id', $site_id);
})->get();

$report = $site->Report::find($report_id);

return view('reports')->with('report', $report)->with('site_id',$site_id)
->with('report_id', $report_id);
}

我的路线

Route::get('sites/{site_id}',['as'=>'SpecificSite','uses'=>'ReportController@showSpecificSite']);

Route::get('sites/{site_id}/report/{report_id}', ['as'=>'Reports', 'uses' => 'ReportController@showMonthlyReport']); 

我的刀片视图

<a href="{{route('SpecificSite',['site_id'=>$record->site_id])}}">view</a>  

<a href="{{route('Reports',['site_id'=>$report->site_id, 'report_id'=>$report->report_id])}}">view</a>

网站模型

public function report()
{
    return $this->hasMany('App\Report');
}

报告模型

public function site()
{
    return $this->belongsTo('App\Site');
}

我的print_r($ report)

App\Report Object
(
[fillable:protected] => Array
    (
        [0] => site_url
        [1] => reciepients
        [2] => monthly_email_date
    )

[connection:protected] => 
[table:protected] => 
[primaryKey:protected] => id
[keyType:protected] => int
[perPage:protected] => 15
[incrementing] => 1
[timestamps] => 1
[attributes:protected] => Array
    (
        [email_date] => 2018-08-23
        [url] => http://foyston.com
        [recipient] => cgallarmin@gmail.com
    )

[original:protected] => Array
    (
        [email_date] => 2018-08-23
        [url] => http://foyston.com
        [recipient] => cgallarmin@gmail.com
    )

[relations:protected] => Array
    (
    )

[hidden:protected] => Array
    (
    )

[visible:protected] => Array
    (
    )

[appends:protected] => Array
    (
    )

[guarded:protected] => Array
    (
        [0] => *
    )

[dates:protected] => Array
    (
    )

[dateFormat:protected] => 
[casts:protected] => Array
    (
    )

[touches:protected] => Array
    (
    )

[observables:protected] => Array
    (
    )

[with:protected] => Array
    (
    )

[morphClass:protected] => 
[exists] => 1
[wasRecentlyCreated] => )1

我的showSpecificSite函数运行得很好。我的本地主机看起来像这样http://localhost:8000/sites/1/ == http://localhost:8000/sites/$site_id/

现在我的问题是我的showMonthlyReport。
http://localhost:8000/sites/report == http://localhost:8000/sites/null/report/null 这是我总能走的路。

应为http://localhost:8000/sites/1/report/1

有解决此问题的主意吗? 对不起,我的语法不好,我的英语不太好。

预先感谢您!〜

4 个答案:

答案 0 :(得分:0)


您不能使用锚点和链接来路由具有两个参数的路标
1-制作一条路线,并使用表格将数据发送到该路线。
已获得2-重定向到您的路线的数据。
代码:

public function redirectroute(Request $request){
        return Redirect::to('sites/'.$request->site_id.'/report'.$request->report_id)->with(compact('request'));
    }


然后做你的工作。

答案 1 :(得分:0)

在控制器中,更改将数据传递到视图的方式

view('reports', ['report' => $report, 'site_id' => $site_id, 'report_id' => $report_id]);

由于$report没有site_idreport_id,但是您计算了它们并将它们以$site_id$report_id的形式传递给控制器​​,因此您应该更改

<a href="{{route('Reports',['site_id'=>$report->site_id, 'report_id'=>$report->report_id])}}">view</a>

对此

<a href="{{route('Reports',['site_id'=>$site_id, 'report_id'=>$report_id])}}">view</a>

答案 2 :(得分:0)

这是您必须生成路线的方式:

<a href="{{ route('SpecificSite', [$record->site]) }}">view</a>
<a href="{{ route('Reports', [$report->site, $report]) }}">view</a>

您的操作方式是,每个数组键都将成为查询字符串中的一个参数。

答案 3 :(得分:0)

我以此解决了我的问题。

public function showSpecificSite($site_id){

$reports = Report::whereHas('site', function($query) use($site_id) {
    $query->where('site_id', $site_id);
})->get(['email_date', 'url', 'recipient', 'report_id', 'site_id']);

$siteName = Site::find($site_id)->site_name;

return view('newsite', compact('site_id', 'siteName', 'reports'));
}

这是因为我从网站上仅获取了三个数据,这就是为什么我的ID为空的原因。 但是非常感谢你们对我的帮助。祝你有美好的一天!〜