我被困了一下,我有很多if else声明handeling,我将需要在更多的无页面中使用它,所以在视图中处理它并不是一个好主意(并阅读它不是一个好主意)
所以我被困在哪里,我有两张桌子。
user
users_details
User table
存储基本登录信息,用户details
包含以下字段
user_id
first_name
last_name
company
location
experience
compensation
about
gender
year
day
month
profile_image
我的关系
用户模型
public function detail()
{
return $this->has_one('Detail');
}
详细信息模型
public function user()
{
return $this->belongs_to('User');
}
所以我坚持的是如何处理r eturn experience, compensation
的对象,因为我需要在多个页面上,首先我在控制器中执行此操作
public function get_index($username = null)
{
$user = User::get_profile($username);
if (is_null($user)) return Response::error('404');
switch ($user->detail->experience) {
case 1:
$user->detail->experience = "No experience";
break;
case 2:
$user->detail->experience = "Some experience";
break;
case 3:
$user->detail->experience = "Experienced";
break;
case 4:
$user->detail->experience = "Very experienced";
break;
}
switch ($user->detail->compensation) {
case 1:
$user->detail->compensation = "Any";
break;
case 2:
$user->detail->compensation = "Depends on Assignment ";
break;
case 3:
$user->detail->compensation = "Paid Assignments Only ";
break;
case 4:
$user->detail->compensation = "Time for Print ";
break;
}
$this->layout->title = 'Profile' . ' ' . $username ;
$this->layout->content = View::make( 'user.profile' )->with( 'user', $user );
}
而且我知道这是我应该提出的那个想法,因为它不会解决我的问题,没有效果,我仍然需要复制。
那么有人可以告诉我以及处理这些问题的示例和有效方法吗?
将不胜感激,谢谢
答案 0 :(得分:2)
嗯,这确实很奇怪。
但是,你有两种方式:
1)定义答案表并与用户表连接,因此SQL结果将返回字符串,而不是ID
2)如果您仍然希望在某种程度上将ID与代码级别的文本相关联,则可以执行以下操作:
在详细信息模型中定义方法,例如使用此开关的compensation_str(),expierence相同。在每个地方你需要显示这个文本你称之为这个方法($ user-> details-> compensation_str())