私は5.1 Laravelアプリケーションで作業しています。そのアプリでは、Bussiness Model(スペイン語でNegocioという名前)とUser Modelの間にOnetoMany Relationshipがあります。ユーザーを登録するとトークンを作成し、それをユーザーテーブルに保存して電子メールの確認に使用します。Eloquent RelationShip Laravel 5.1
ユーザーがアカウントを確認したら、コントローラで受信したトークンを使用してディレクトリを作成しますそのユーザーが関連しているビジネスの名前を 'public/negocios /'に入力します。私が持っているuserconfirmartionに私のコントローラでそう
:
私は、ディレクトリの名前として商務名を取得するディレクトリを作成する機能を持っている私のビジネスモデルでpublic function emailConfirm($token)
{
try {
//getting the bussiness that user is related to
$negocio = App\Negocio::with(['user' => function ($query) use($token) {
$query->where('token', 'like', $token);
}])->firstOrFail()->folderProfile();
//Then we activate the user account
$user = User::whereToken($token)->firstOrFail()->confirmEmail();
return redirect('/login')->with('mensaje', '¡Su cuenta de usuario se ha activado, ahora puede iniciar sesión en su cuenta!');
} catch (ModelNotFoundException $e) {
return redirect('/login')->with('mensaje', 'Ya se ha confirmado a este usuario, solo inicie sesión ¬¬');
}
}
:
public function folderProfile()
{
$name = str_replace(' ', '', $this->nombre_negocio);
$ruta_a_public = public_path().'/negocios/';
$ruta_a_public .= $name;
File::makeDirectory($ruta_a_public, $mode = 0777, true, true);
}
問題はphp artisan tinker
のコードを調査しているEloquentは、ユーザーが関連するビジネスだけでなく、データベースに記録されたすべてのビジネスを取得します。
(ビジネスモデル上)で失敗した部分を期待通りにあなたが私に私の「クエリ」の作業を行うための最善の方法を言うことができるかどうかはあなたから理解されるだろう:
$negocio = App\Negocio::with(['user' => function ($query) use($token) {
$query->where('token', 'like', $token);
}])->firstOrFail()->folderProfile();
:私のNegocioモデル(スペイン語で商務モデル)で :私は
https://laravel.com/docs/5.1/eloquent-relationships#querying-relations
EDITに読んだ上でそれをベース
public function negocio()
{
return $this->belongsTo('App\Negocio', 'negocio', 'codigo_negocio');
}
みんなありがとう...この長い記事のために申し訳ありません:
public function user()
{
return $this->hasMany('App\User', 'negocio', 'codigo_negocio');
}
とユーザーモデルでは、私はこれを持っています。
こんにちはElotgamuさん、 あなたのテーブルを簡単に説明して、ユーザーテーブルとBussinesモデルの実際の関係を確認してください。 –
編集済み...私のモデル関係をユーザーとビジネスモデルの間に追加しました – elotgamu