0
我有兩個表Models
和Cars
根據cars.model_id = model.id
相關。 汽車belongsTo
型號和型號hasMany
汽車。Laravel關係查詢返回相關的ID而不是主
當我想要做的基礎上,Model
名稱的搜索在cars
表我做下面的查詢:
Car::join('models', 'cars.model_id', '=', 'models.id)
->where('models.name', 'like', '%'.$term.'%')
->paginate($_ENV['ITEMS_PER_PAGE']);
我的問題是,在這種情況下,Laravel的雄辯ORM返回model.id作爲主要的id,所以resultset將把model.id作爲Id而不是Car.id。任何解決方案?
按照Laravel的文檔,我認爲雄辯會正確地假設表ID沒有任何幫助:
注:口才也將承擔每個表都有一個主鍵列 名爲id。你可以定義一個primaryKey屬性來覆蓋這個公約。同樣,您可以定義連接屬性以覆蓋使用 模型時應使用的數據庫連接的名稱。
但是,輝煌,但沒有回答我的問題是:爲什麼發生這種情況,如果文檔說,雄辯會假設正確的Id。 – Kornel
你知道,這個筆記不屬於連接,在這裏不適用。對你的問題的回答很明顯 - 你從一個表中獲得'id',從另一個表中獲得'id' - 你會如何區分它們而不會出現鋸齒?如果你想要另一個鍵,你需要別名,假設兩個字段都被命名爲'id' –
首先:你的解決方案不起作用,我不能選擇paginate方法中的列。 (至少在4.1中給出了語法錯誤) 第二:我只是指的是Laravel的文檔,他怎麼做,我不在乎,這就是爲什麼我使用它。我會通過models.id和cars.id這樣的表名來明確地選擇,它應該足以區分,但正如文檔所說,我已經重複了3次,Eloquent應該能夠爲我做到這一點,但它確實不行。 – Kornel