2015-10-06 42 views
1

有沒有什麼辦法可以得到型號名稱基於名稱在Laravel?有無論如何根據表名得到型號名稱

例如,我有一個用戶型號:

class User extends Model { 
    // This class is related to `users` table in Database. 
} 

假設這模型(用戶)有關用戶表數據庫。我想要一個這樣的功能:

getModelName('users'); // This should return 'User' 

有沒有這樣的事情?

+0

'用strtolower(__ __類);' – Robert

+0

只是出於興趣,這將是一個使用案例嗎? – Wader

回答

3

Illuminate\Database\Eloquent\Model有一個函數用於返回給定模型的表名。 https://github.com/laravel/framework/blob/5.1/src/Illuminate/Database/Eloquent/Model.php#L1951

你可以逆向工程這一功能類似

function getModelName($table) 
{ 
    return Str::studly(Str::singular($table)); 
} 
+0

+1我在想這個。但仍然存在一個問題,那麼自定義表名呢?假設在我的** User **模型中,我明確定義了相關的表格:'protected $ table ='my_users''。所以在這種情況下,它將返回** MyUser **,而不是**用戶**。 –

+0

模型類不再實現getModelName函數,但函數'STR :: studly(Str :: singular($ table));'仍然在Laravel 5.2中工作 – g4b0

+0

我正在考慮簡單地使用數組將表名映射到模型。對於給定的表格有多個模型是合理的(儘管可能不推薦),所以自動化它是有潛在風險的。 – benjaminhull