【发布时间】:2018-05-17 01:47:01
【问题描述】:
我正在将一个项目移植到 Laravel。
我有两个彼此处于一对多关系的数据库表。它们由三个条件连接。如何在 Eloquent 中建模这种关系?
我不应该修改数据库架构,因为它必须保持与其他事物的向后兼容。
我尝试了以下方法,但它不起作用。
拥有方:
use Illuminate\Database\Eloquent\Model;
class Route extends Model
{
public function trips()
{
return $this->hasMany('Trip', 'route_name,source_file', 'route_name,source_file')
}
}
反面:
use Illuminate\Database\Eloquent\Model;
class Trip extends Model
{
public function routes()
{
return $this->belongsTo('Route', 'route_name,source_file', 'route_name,source_file');
}
}
示例Route 数据库值:
id | route_name | source_file
---------------------------------------
1 | Berlin - Paris | file1.xls
2 | Madrid - London| file2.xls
3 | Berlin - Paris | file3.xls
示例Trip 数据库值:
id | route_name | source_file | duration
---------------------------------------------------------
1 | Berlin - Paris | file1.xls | 78
2 | Madrid - London | file2.xls | 241
3 | Berlin - Paris | file3.xls | 65
1 | Berlin - Paris | file1.xls | 95
1 | Berlin - Paris | file1.xls | 65
Route 和Trip 有其他属性,为了简洁,我没有在这里列出。
这在 Eloquent 中可行吗?
【问题讨论】:
-
恐怕你用 eloquent 做不到。它不支持多个外键关系。
-
我认为您只能拥有一个外键和本地键,但您可以在查询中添加额外的
where子句。这对你来说足够了吗?您能否为该问题提供更多背景信息?这将有助于我们更好地理解问题。 -
@Jonathon 我将模型名称
A和B替换为我使用的实际名称,希望现在更容易理解问题域。 -
@Jonathon 您能否提供一个示例来说明您的意思并将其添加为答案?我很乐意接受它。
标签: laravel eloquent laravel-eloquent