Laravel - 在哪里实现算法功能

时间:2017-07-24 11:00:00

标签: php laravel laravel-5

我有以下表格:

  

Address
  ID,

     

很长,

     

LATT,

     

address_1

     

邮政编码

Jobs

  

取件(指向idAddress的链接)

     

dropoff(链接到id中的Address

Quotes

  

取件(指向idAddress的链接)

     

dropoff(链接到id中的Address

部分功能是计算pickupdropoff之间的距离,但问题是我目前正在为Jobs的控制器内部计算此功能当然Quotes不是很好,因为如果功能发生变化或者其他什么,那么这需要以两种方式改变它。我希望能够重用该功能。

我们的想法是,如果更改了pickupdropoff,则会更改Jobs表格,然后重新计算两个位置之间的距离。因此,基本上JobsQuotes将能够访问函数calculateDistance($pickup, $dropoff)

有人建议我可以存储这些内容,以便我不重复并重复使用代码吗?

1 个答案:

答案 0 :(得分:2)

最简洁的方法可能是在Address模型distanceTo上创建一个函数,该函数将另一个地址对象作为参数并返回当前和参数地址之间的距离

那么,您可以执行以下操作:

$distance = $job->pickup->distanceTo($job->dropoff);

这样,任何Address对象都可以访问此功能。甚至可能稍后在项目中添加的地址链接。