php - Laravel Eloquent,如何用公式定义表关系?

标签 php mysql laravel laravel-5 eloquent

关于 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/

相关文章:

php - mysqli 的 odbc_result 方法的替代方法

php - 异或符号表示?

php - schemadb + ZendFramework 集成,用于在开发时快速增长数据库

php - 如何使用 Laravel Eloquent 应用数组中的值并更新行?

laravel - 为什么我在迁移或播种 Lumen 应用程序时会收到 "Class not found"错误?

php - 将 <p> 更改为 <br>

mysql - gem 安装 mysql 不起作用。但我能够连接到 mysql -u root -p

java - 如何在使用 LOAD DATA 命令时跳过 csv 文件的行?

mysql - 使 sql 查询更简单更短(Laravel)

php - 尝试在表单提交中插入 NULL 日期但得到 00 :00