【发布时间】:2018-08-25 00:18:04
【问题描述】:
我的报告控制器
use App\Site;
use App\Report;
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'));
}
Route::get('sites/{site_id}',['as'=>'SpecificSite','uses'=>'ReportController@showSpecificSite']);
网站模型
public function report()
{
return $this->hasMany('App\Report');
}
报告模型
public function site()
{
return $this->belongsTo('App\Site');
}
我的刀片视图
<a href="{{route('SpecificSite',['site_id'=>$record->site_id])}}">view</a>
这是我将 laravel 版本 5.2.36 升级到 5.4.36 的问题 这在 5.2 版本中运行良好,这是正在运行的文章。 Laravel Function that hold two parameters
SQLSTATE[42S22]:未找到列:1054 'where 子句'中的未知列'reports.site_site_id'(SQL:从@ 中选择email_date、url、recipient、report_id、site_id 987654331@ where exists (select * from sites where reports.site_site_id = sites.site_id and site_id = 1))
我的 route:list 和之前一样。我也有我的 routes/web.app 文件夹。 当您升级 laravel 版本时,您的控制器功能是否可能受到影响?任何想法如何解决这个问题。提前致谢。
【问题讨论】:
-
看起来 Laravel 如何“猜测”关系中的 FK 名称发生了一些变化(所以是 Model 类而不是你的 Controller)。您始终可以在
belongsTo的可选参数中明确指定 FK 名称。 -
我该怎么做? @TobiasK
-
签名是
public function belongsTo($related, $foreignKey = null, $ownerKey = null, $relation = null)。鉴于您在报告表中的 FK 名为site_id,您会这样做:return $this->belongsTo('App\Site', 'site_id'); -
@TobiasK 你能回答我吗!~ 非常感谢
标签: laravel laravel-5.4