Laravel 5.2 Eloquent主键作为多键

时间:2016-09-26 09:14:37

标签: php laravel laravel-5 eloquent laravel-5.2

我有一个包含以下列的模型:

  • blog_id(fillabale)
  • 日期(可填写)
  • 计数器

blog_id + date

上的唯一键

每当我试图通过使用

来获取此表的结果时
$model = BlogCounter::findOrNew(2,'2016-09-25');

$model = BlogCounter::whereBlogId(2)->whereDate('date','=','2016-09-25')->first()

我收到错误:

  

列blog_counter.id不存在

我试图覆盖primaryKey并将其设置为 null / [' blog_id',' date'] /' blog_id,date' 以上都没有解决Eloquent尝试通过id获取raw的问题。

我在这张桌子上没有主键,因为我使用的是唯一键。

我错过了什么吗?如何在没有主键的情况下强制执行Eloquent模型?

BTY,我现在正在使用PostgreSQL 9.5。

谢谢!

1 个答案:

答案 0 :(得分:0)

Eloquent假设您的表中有一个标识行的 id 列。在您的情况下,此列名为 blog_id ,因此您需要让Eloquent知道。

您可以通过在模型中定义 primaryKey 属性来实现。它不需要是数据库中的主键,只要它可以用于获取单个记录:

class BlogCounter extends Model {
  protected $primaryKey = 'blog_id';
}