使用 Laravel 中另一个 Table 的值创建值列表
Creating a Value List Using Values from Another Table in Laravel
我有一个简单的数据库应用程序,用于记录联系人(姓名、地址等)。我正在尝试利用其他各种 table 来为表单生成值列表。然后我想让用户输入的所有表单值在提交时保存到适当的 tables 中。
例如,我有 people
table,其中包含姓名和地址。我有一个 title
table ,其中包含不同的标题可能值(即先生、夫人、博士女士)。填写联系表格后,我想从标题 table 生成表格中标题字段的值。我正在尝试为联系人创建一个模型,其中包括单独的 类 人员 table 和标题 table。
在我的 ContactController.php 我有:
class ContactController extends Controller {
public function index()
{
$people = Contact::all();
// return main homepage for Contacts section
return view('pages.contacts.home', compact('people'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
$title = Contact::lists('title', 'id');
return view('pages.contacts.create');
}
在我的 Contact.php 模型中,我有以下内容:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Contact extends Model {
protected $table = 'people';
protected $fillable = [
'title_id',
'name_first',
'name_middle',
'name_last',
'date_birth',
'date_death',
'bio',
'created_at',
'modified_at'
];
public function title() {
return $this->belongsTo('Title', 'title_id', 'id');
}
}
class Title extends Model {
protected $table = 'title';
protected $fillable = [
'title',
'created_at',
'modified_at'
];
public function contacts() {
return $this->hasMany('Contact', 'title_id', 'id');
}
}
在表格中我有以下内容:
<div class="form-group">
{!! Form::label('title', 'Title: ') !!}
{!! Form::select('title', $title) !!}
</div>
<div class="form-group">
{!! Form::label('name_first', 'First Name: ') !!}
{!! Form::text('name_first', null, ['class' => 'form-control']) !!}
{!! Form::label('name_middle', 'Middle Name: ') !!}
{!! Form::text('name_middle', null, ['class' => 'form-control']) !!}
{!! Form::label('name_last', 'Last Name: ') !!}
{!! Form::text('name_last', null, ['class' => 'form-control']) !!}
{!! Form::label('name_nick', 'Nickname: ') !!}
{!! Form::text('name_nick', null, ['class' => 'form-control']) !!}
</div>
我收到一条错误消息,指出变量 title
未定义。我无法确定为什么不返回值列表。我的关系返回不正确吗?
您没有将 $title 变量传递给您的视图。
在 ContactController 的创建方法中,将 $title 变量分配给您的视图:
public function create()
{
$title = Contact::lists('title', 'id');
return view('pages.contacts.create')->with('title', $title);
}
有关更多文档,请参阅 http://laravel.com/docs/5.0/views。
我有一个简单的数据库应用程序,用于记录联系人(姓名、地址等)。我正在尝试利用其他各种 table 来为表单生成值列表。然后我想让用户输入的所有表单值在提交时保存到适当的 tables 中。
例如,我有 people
table,其中包含姓名和地址。我有一个 title
table ,其中包含不同的标题可能值(即先生、夫人、博士女士)。填写联系表格后,我想从标题 table 生成表格中标题字段的值。我正在尝试为联系人创建一个模型,其中包括单独的 类 人员 table 和标题 table。
在我的 ContactController.php 我有:
class ContactController extends Controller {
public function index()
{
$people = Contact::all();
// return main homepage for Contacts section
return view('pages.contacts.home', compact('people'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
$title = Contact::lists('title', 'id');
return view('pages.contacts.create');
}
在我的 Contact.php 模型中,我有以下内容:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Contact extends Model {
protected $table = 'people';
protected $fillable = [
'title_id',
'name_first',
'name_middle',
'name_last',
'date_birth',
'date_death',
'bio',
'created_at',
'modified_at'
];
public function title() {
return $this->belongsTo('Title', 'title_id', 'id');
}
}
class Title extends Model {
protected $table = 'title';
protected $fillable = [
'title',
'created_at',
'modified_at'
];
public function contacts() {
return $this->hasMany('Contact', 'title_id', 'id');
}
}
在表格中我有以下内容:
<div class="form-group">
{!! Form::label('title', 'Title: ') !!}
{!! Form::select('title', $title) !!}
</div>
<div class="form-group">
{!! Form::label('name_first', 'First Name: ') !!}
{!! Form::text('name_first', null, ['class' => 'form-control']) !!}
{!! Form::label('name_middle', 'Middle Name: ') !!}
{!! Form::text('name_middle', null, ['class' => 'form-control']) !!}
{!! Form::label('name_last', 'Last Name: ') !!}
{!! Form::text('name_last', null, ['class' => 'form-control']) !!}
{!! Form::label('name_nick', 'Nickname: ') !!}
{!! Form::text('name_nick', null, ['class' => 'form-control']) !!}
</div>
我收到一条错误消息,指出变量 title
未定义。我无法确定为什么不返回值列表。我的关系返回不正确吗?
您没有将 $title 变量传递给您的视图。
在 ContactController 的创建方法中,将 $title 变量分配给您的视图:
public function create()
{
$title = Contact::lists('title', 'id');
return view('pages.contacts.create')->with('title', $title);
}
有关更多文档,请参阅 http://laravel.com/docs/5.0/views。