AngularJS&Laravel 4.2从Multip表中检索数据并将其联接

时间:2018-09-06 09:35:34

标签: php mysql laravel

我最近开始使用Laravel,最近才获得帮助,可以将数据从一个控制器插入到多个表中。现在,我正在尝试从数据库中检索数据并填充表单(如果需要进行编辑或是否有人需要查看数据以确认其正确性)。我不明白如何在Laravel模型中加入表格?还是我必须创建一个联接SQL查询?

Travelbill.php模型

<?php

  class Travelbill extends Eloquent {

    protected $table = 'travelbill';
    protected $primaryKey = 'TravelbillId';
    protected $fillable = array('ResourceId', 'Destination', 'StartDay', 'StartTime', 'EndDay', 'EndTime', 'Invoice', 'TravelCompensation');
    public $timestamps = true;

    public function travelbill() {
      return $this->belongsTo('User', 'ResourceId', 'ResourceId');
    }

    public function cost() {
      return $this->hasOne('Cost', 'TravelbillId', 'TravelbillId');
    }

    public function allowance() {
      return $this->hasOne('Allowance', 'TravelbillId', 'TravelbillId');
    }
  }

 ?>

Cost.php模型

<?php

  class Cost extends Eloquent {

    protected $table = 'cost';
    protected $primaryKey = 'CostId';
    // protected $fillable = array('TravelbillId', 'Description', 'DescriptionByHiq', 'SekInklMoms', 'SekExklMoms', 'SekInklMomsByHiq', 'SekExklMomsByHiq', 'Currency', 'ExchangeRate');
    protected $fillable = array('TravelbillId', 'Description', 'DescriptionByHiq', 'SekInklMoms', 'SekMoms', 'SekInklMomsByHiq', 'SekMomsByHiq', 'Currency', 'ExchangeRate');
    public $timestamps = false;

    public function cost() {
      return $this->belongsTo('Travelbill', 'TravelbillId', 'TravelbillId');
    }
  }


 ?>

Allowance.php模型

<?php

  class Allowance extends Eloquent {

    protected $table = 'allowance';
    protected $primaryKey = 'AllowanceId';
    protected $fillable = array('TravelbillId', 'DayAllowance', 'Breakfast', 'Lunch', 'Dinner');
    public $timestamps = false;

    public function allowance() {
      return $this->belongsTo('Travelbill', 'TravelbillId', 'TravelbillId');
    }
  }


 ?>

或者我在哪里加入,所以如果我得到旅行单,它还会随请求获得费用和津贴数据?

编辑:
我需要将数据输入到AngularJS表单中,因此,如果id = 1的人需要编辑其Travelbill,他应该可以单击编辑按钮并查看ha填写的信息。

1 个答案:

答案 0 :(得分:0)

您可以在此处执行的最简单的数据检索形式是:

$travelBills = Travelbill::with(['code','allowance'])->get();

这是渴望加载,将执行三个查询:

  • 加载所有旅行账单
  • 加载所有具有与所有旅行单ID匹配的外键的代码,并将其分配给每个旅行模型
  • 同样的津贴

最终,每个Travelbill模型将已经具有一个关联的Code and Allowance模型,使您可以像这样工作:

echo $travelBill->cost->SekInklMoms;

对于您加载的其中一份旅行单。注意第一个查询中的几件事:

  • 旅行单被过滤,我们目前正在全部加载。
  • 我们正在做简单,不一定有效。我建议首先先熟悉加载的关系,然后再进行连接(无论如何都违反了雄辩的ORM精神)