我们希望使用Eloquent ORM和Laravel 5为http://www.mbarendezvous.com/实现Composite主键.我知道Eloquent 目前不支持它.请建议什么应该是相同的最佳选择.
我使用以下代码.它会覆盖原始的Model.php方法并考虑所有主键.将其放入使用复合主键的模型中:
protected function getKeyForSaveQuery()
{
$primaryKeyForSaveQuery = array(count($this->primaryKey));
foreach ($this->primaryKey as $i => $pKey) {
$primaryKeyForSaveQuery[$i] = isset($this->original[$this->getKeyName()[$i]])
? $this->original[$this->getKeyName()[$i]]
: $this->getAttribute($this->getKeyName()[$i]);
}
return $primaryKeyForSaveQuery;
}
/**
* Set the keys for a save update query.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
protected function setKeysForSaveQuery(Builder $query)
{
foreach ($this->primaryKey as $i => $pKey) {
$query->where($this->getKeyName()[$i], '=', $this->getKeyForSaveQuery()[$i]);
}
return $query;
}
Run Code Online (Sandbox Code Playgroud)
编辑:不要忘记在模型类中添加以下内容,否则这将无法正常工作.
public $incrementing = false;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5227 次 |
| 最近记录: |