Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将数据从表复制到另一个表并应用一对多关系_Php_Laravel - Fatal编程技术网

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']);