2014-06-09 68 views
1

我想實現一對多的關係在laravel 許多關於我的表有自定義主鍵名不IDLaravel一個以自定義主鍵不工作

我已經設置$primartKey屬性很好,但關係亙古不變似乎工作。

activities 
|act_ID|act_acc_ID|......... 

categories 
|acc_ID|....... 

這裏是我的模型

class Adventure extends \Eloquent { 


    /** 
    * @var string $table the name of the table 
    */ 
    protected $table = 'activities'; 

    /** 
    * @var string $primaryKey the primary key of the table 
    */ 
    protected $primaryKey = 'act_ID'; 

    /** 
    * @var bool timestamps updated_at and created_at columns flag 
    */ 
    public $timestamps = false; 

    /** 
    * 
    */ 
    public function category(){ 
     $this->belongsTo('Category','act_acc_ID'); 
    } 
} 


class Category extends \Eloquent { 

    /** 
    * @var string $table the name of the table 
    */ 
    protected $table = 'categories'; 

    /** 
    * @var string $primaryKey the primary key of the table 
    */ 
    protected $primaryKey = 'acc_ID'; 

    /** 
    * @var bool timestamps updated_at and created_at columns flag 
    */ 
    public $timestamps = false; 

    public function adventures(){ 
     $this->hasMany('Adventure','act_acc_ID'); 
    } 
} 

現在,當過我嘗試從類別訪問來自冒險類別或冒險,我得到

關係方法必須返回 式照亮對象\ Database \ Eloquent \ Relations \ Relation

我在這裏做錯了什麼? 有很多冒險,其類別爲15,所以我嘗試 我嘗試Categories::find(15)->adventures也試過Categories::find(15)->adventures()

回答

2

您沒有使用return關鍵字,它應該是這樣的:

public function category(){ 
    return $this->belongsTo('Category','act_acc_ID'); 
} 

public function adventures(){ 
    return $this->hasMany('Adventure','act_acc_ID'); 
} 

添加return關鍵字兩種關係方法。

+0

是的,我相信因爲我們犯了一些愚蠢的錯誤(我自己做過),你應該休息一下,休息一下,然後重新開始新鮮的大腦。當出現問題並找不到解決方案時,只需休息一下,它可以幫助:-) –

+0

我已經從'CI'切換,有一天我浪費了3個小時來找出一個錯誤,我的重定向沒有在屏幕上顯示任何內容,但我在前一天發現它,那是因爲我沒有在重定向時使用'return'關鍵字,它必須像'return Redirect(...)'重定向::(...)'。我花了一些時間來改變我在CI中使用的練習。祝一切順利 :-) –