Php 将数据从表复制到另一个表并应用一对多关系
这是我的报告模型Php 将数据从表复制到另一个表并应用一对多关系,php,laravel,Php,Laravel,这是我的报告模型 protected $fillable = [ 'site_url', 'reciepients', 'monthly_email_date' ]; public function site() { return $this->belongsTo('App\Site'); } 这是我的网站模型 public function report() { return $this->hasMany('App\Report'); }
protected $fillable = [
'site_url',
'reciepients',
'monthly_email_date'
];
public function site()
{
return $this->belongsTo('App\Site');
}
这是我的网站模型
public function report()
{
return $this->hasMany('App\Report');
}
这是我的控制器
public function showSpecificSite($site_name)
{
$records = DB::table('reports')
->select('email_date','url','recipient')
->whereHas('sites', function($query){
$query->where('site_name',$site_name);
})
->get();
return view('newsite')->with('records',$records)
->with('site_name',$site_name);
}
我的控制器还不能正常工作。
问题是我想把所有三个文件从sites表复制到reports表
是否可以在插入到中
我在ReportController上的代码向您显示,我正在从reports表中选择数据,但我是将数据放入reports表以查看输出的人,但它尚未工作,因为它无法达到site_name的值,即使我已经在这两个表之间建立了关系。您在您的应用程序中实际上没有使用Eloquent控制器您只是在使用查询生成器(DB
)。这意味着你无法从你雄辩的模型中获得任何东西
尝试:
我已经在列列表中添加了id
,因为我很确定您需要它来使用whereHas
NB要在闭包中使用父作用域中的变量,需要使用use()
将其传入 似乎回调函数作用域中未定义$site\u name
,请尝试函数($query)使用($site\u name){
@Havenard已尝试,但不起作用。调用未定义的方法illumb\Database\query\Builder::sites(),whereHas();功能不起作用too@Christian对不起,我应该已经注意到了。您在报告
模型中使用的方法称为站点
,但是,您的问题中的查询结果是站点
。它应该与您在模型中使用的方法名称相匹配。我已更新了我的答案。非常感谢@Ross Wilson
$records = \App\Report::whereHas('site', function($query) use($site_name) {
$query->where('site_name', $site_name);
})->get(['id', 'email_date', 'url', 'recipient']);