php - LARAVEL:我想从另一个表中导入信息并将其添加到注册表单
问题描述
我创建了一个新的数据库部门,其中包含两行(id、name)。我想从数据库中导入信息并将其放入注册表单的下拉列表中
正如您从下面的代码中看到的那样,我在register.blade.php
<div class="form-group-row">
<label for="departements" class="col-md-4 control-label text-md-right">Départements :</label>
<div class="col-md-6">
<select name="departements" id="departements" class="form-control">
@foreach($departements as $departement)
<option value="{{ $departement ->id }}">{{ $departement ->name }}</option>
@endforeach
</select>
</div>
</div>
我已经设置了用户和部门之间的关系。部门型号:
class Departement extends Model
{
public $fillable = ['name'];
public function users()
{
return $this->belongsToMany('App\User');
}
}
用户型号:
public function departements()
{
return $this->belongsToMany('App\Departement');
}
public function HasAnydepartement($departements)
{
if($this—>departements()->whereIn('name',$departements)->first())
{
return true;
}
return false;
}
public function Hasdepartement($departement)
{
if($this->departements()->where('name',$departement)->first())
{
return true;
}
return false;
}
我App\Departement
在寄存器控制器上使用了。
我的问题是,即使我使用了App\Departement
他们也向我展示了这个错误:
未定义变量:departements(查看:C:\Users\tchic\AppData\Roaming\Composer\vendor\bin\anapec\resources\views\auth\register.blade.php)
这是我的注册控制器,我有错误:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\User;
use App\Departement;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
$departements=Departement::all();
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'prenom' => ['required', 'string', 'max:255'],
'phone' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
* @return \App\Departement
*/
protected function create(array $data)
{
$departements=Departement::all();
return User::create([
'name' => $data['name'],
'prenom' => $data['prenom'],
'phone' => $data['phone'],
'departement' => $data['departement'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
}
如果有人可以帮助我了解我可以在 Register 控制器上定义 departements 变量的位置,那将很有帮助。谢谢你。
解决方案
您是从视图中的循环中定义$departements还是从控制器传递它?如果没有,假设您在视图中传递了用户,请尝试此操作。
@foreach($user->departements() as $departement)
推荐阅读
- java - 如何在不丢失原始文件的情况下压缩图像?
- angular - 需要根据地图函数中的条件进行过滤
- azure - 如何在交叉订阅中复制 Azure sql db
- function - Delphi - 如果没有创建类,为什么这个函数起作用?
- c - 如何将数据保存在已知内存位置一次以便在 x86 程序集中多次重用?
- extjs - Sencha Touch 部署选项?
- rest - 带有 ID 令牌的 REST API Firestore 身份验证
- api - 为什么 System.Net.WebException:错误:发生 SecureChannelFailure?
- python - 如何在多个条件下断言一次?
- google-apps-script - 用于 Google Apps 脚本的 JWT?