2016-09-26 71 views
0

我有具有以下列模型:Laravel 5.2鋒主鍵作爲多鍵

  • blog_id(fillabale)
  • 日期(可填寫)
  • 計數器

獨特鍵上blog_id +日期

無論何時我試圖通過使用此表獲得結果,例如,

$model = BlogCounter::findOrNew(2,'2016-09-25'); 

或者

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

我收到提示:

column blog_counter.id does not exist

我試圖重寫的PrimaryKey並將其設置爲空 /[ 'blog_id', '日期']/'blog_id,date' 以上都沒有解決這個問題,試圖通過id原始提取。

I don在這個表上沒有主鍵,因爲我使用的是唯一鍵。

我錯過了什麼嗎?如何強制Eloquent模型在沒有主鍵的情況下工作?

BTY,我現在使用的是PostgreSQL 9.5。

謝謝!

+0

您不能因爲laravel僅爲雄辯模型的關鍵屬性提供find方法。所以你必須建立一個主鍵字段。看到這個https://github.com/laravel/framework/issues/5355 –

+0

你發佈的錯誤是由第一個使用findOrNew的查詢返回的,你用第二個使用wheres/first的查詢得到的錯誤是什麼? –

回答

0

Eloquent假設表中有一個ID列標識一行。在你的情況下,這一列被命名爲blog_id所以你需要讓Eloquent知道。

您可以通過在模型中定義primaryKey屬性來實現此目的。只要它可以用於獲取單個記錄,它不需要是數據庫中的主鍵:

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

@ edrzej.kurylo我的「鑰匙」是2個字段(唯一)的組合 date + blog_id .. 這就是我在努力.. –

+0

雄辯不支持組合鍵,所以你不能使用找到*()方法來獲取記錄。您需要將自己的邏輯添加到模型中 –