关于 Laravel Eloquent ,
如何使用表中不存在但根据表中的值计算得出的内容来定义关系条件。
例如:
quarters transactions
_________ _________ _________ ___________
| name | desc | | id | date |
_________ _________ _________ ___________
| 1 | Jan-Mar | | 1 | 2016-04-01 |
| 2 | Apr-Jun | | 2 | 2016-05-01 |
| 3 | Jul-Sep | | 3 | 2012-07-21 |
| 4 | Oct-Dec | | 4 | 2014-01-31 |
_________ _________ _________ ___________
用这个很好用
SELECT
FROM transactions tx
INNER JOIN quarters q ON q.name = ((MONTH(tx.date)+2)/3)
Quarters.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Quarters extends Model{
}
交易.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Transactions extends Model{
public function quater(){
return $this->belongsTo('App\Models\Quarters' , '????', 'name') ;
}
}
我应该在模型中定义什么才能执行以下操作:
交易::where("some_field", "some_value")->with("quater")->get()
注意:我想在不修改表结构的情况下执行此操作。
最佳答案
为了实现 Eloquent 关系
,您需要在Transection
表中添加另一列。示例:
quarters transactions
_________ _________ _________ ___________ ____________
| name | desc | | id | quarter_id | date |
_________ _________ _________ ___________ ____________
| 1 | Jan-Mar | | 1 | 2 | 2016-04-01 |
| 2 | Apr-Jun | | 2 | 2 | 2016-05-01 |
| 3 | Jul-Sep | | 3 | 3 | 2012-07-21 |
| 4 | Oct-Dec | | 4 | 1 | 2014-01-31 |
_________ _________ _________ ___________ ______________
在此架构中,quarter_id
是表quarter_table
的捕获。现在您可以在模型中定义 Eloquent 关系,如下所示:
交易.php
public function quarter(){
return $this->belongsTo('App\Models\Quarters') ;
}
Quarters.php
public function transactions(){
return $this->hasMany('App\Models\Transactions') ;
}
Controller
$transactions = Transactions::where('quarter_id', $someValue)->get()
or
$transactions = Transactions::with('quarter')->get();
关于php - Laravel Eloquent,如何用公式定义表关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39991699/