我有一個場景,我想提供給定表的字段列表(以及單個行的ID)並返回數據。但我想要查看任何字段以自動獲取查找數據。Laravel:有沒有辦法讓任何給定字段名的模型與另一個表的關係?
我建立了查找字段的關係,但希望我的代碼自動查找在每個字段上建立的任何關係。
這可能嗎?
-
例如,我有幾個查找字段到其他桌的「工作」表:
id
description
job_type_id
repro_status_id
job_status_id
customer_id
supplier_id
...
然後,我有我的「工作」的模式,並使用Laravel的約定創建的關係:
class Job extends BaseModel {
public function jobStatus(){
return $this->belongsTo('JobStatus', 'job_status_id');
}
public function jobType(){
return $this->belongsTo('JobType', 'job_type_id');
}
public function customer(){
return $this->belongsTo('Customer', 'customer_id');
}
// etc...
}
因此,建立這些關係,將有助於能夠得到基於字段名的關係。喜歡的東西...
// Made up code
Job::getRelationshipByFieldname('job_type_id'); // Returns the jobType method
而且我想這樣做的理由:我建立表單字段列表的「工作」表,但需要捉對任何領域的任何關係。
顯示您的數據庫架構 – 2014-09-25 14:45:20
感謝@JarekTkaczyk - 已經更新。 – 2014-09-26 10:45:22
如果你遵循Laravel的命名約定,通常如果你涉及'job_type_id',你要麼命名關係'JobType'或'JobTypes',所以你可以用單數和複數名稱來調用'method_exists'。不是最好的選擇(我肯定可以用Reflection來完成)但是可能的一個 – Joe 2014-09-26 10:46:31