我是否可以有一个雄辩的关系,只有部分匹配的连接?
解释一下,这是一个模型;
class PostcodeCoord extends Model {
public function payment()
{
return $this->hasMany('App\Models\Payment', 'Vendor ZIP', 'postcode');
}
}
我的另一个模特;
class Payment extends Model {
public function postcodeCoord()
{
return $this->belongsTo('App\Models\PostcodeCoord', 'postcode', 'postcode');
}
}
我的payments
表格中有一个名为Vendor ZIP
的列。我的postcode_coords
表格中有一个名为postcode
的列。
问题在于,postcode
列只有3或4个字符长(英国邮政编码例如SW1A的第一部分)。然而,Vendor ZIP
,是完整的6或7个字符。例如SW1A2AA。
答案 0 :(得分:0)
AFAIK,无法在ID字段之间的部分匹配上创建关系。也就是说,我可以想出两种不同的解决方法:
在您的payments
表格中添加一个名为postalcodegroup
的新列。创建或更新模型时,请确保使用邮政编码的第一部分填写此列。最好的方法是通过model events。然后,您可以在payments.postcodegroup
和postcode_coords.postcode
。
在付款模型上写一个accessor,该模型将执行数据库查询,以便在调用时从postcode_coords
表中检索相关数据。
在这两个中,选项1可能更好(更干净),尽管它确实需要在表中添加列。