タグ付けされた質問 「eloquent」

Laravelに含まれるEloquent ORMは、データベースを操作するための美しくシンプルなActiveRecord実装を提供します。各データベーステーブルには、そのテーブルとの対話に使用される対応する「モデル」があります。モデルを使用すると、テーブルのデータをクエリしたり、テーブルに新しいレコードを挿入したりできます。

10
すべての関係を含むEloquentオブジェクトのクローンを作成しますか?
すべての関係を含め、Eloquentオブジェクトを簡単に複製する方法はありますか? たとえば、次のテーブルがある場合: users ( id, name, email ) roles ( id, name ) user_roles ( user_id, role_id ) usersテーブルに新しい行を作成し、を除いてすべての列が同じ idであることに加えて、user_rolesテーブルに新しい行を作成し、新しいユーザーに同じロールを割り当てる必要があります。 このようなもの: $user = User::find(1); $new_user = $user->clone(); ユーザーモデルの場所 class User extends Eloquent { public function roles() { return $this->hasMany('Role', 'user_roles'); } }

6
2つのEloquentコレクションをマージする方法は?
質問テーブルとタグテーブルがあります。特定の質問のタグからすべての質問を取得したいと思います。したがって、たとえば、特定の質問に「旅行」、「電車」、「文化」のタグを付けることができます。これら3つのタグのすべての質問を取得できるようにしたいと思います。トリッキーなのは、質問とタグの関係がEloquentでbelongsToManyとして定義されている多対多であるということです。 私は以下のように質問コレクションをマージしようと考えました: foreach ($question->tags as $tag) { if (!isset($related)) { $related = $tag->questions; } else { $related->merge($tag->questions); } } しかし、それは機能していないようです。何もマージしていないようです。私はこれを正しく試みていますか?また、Eloquentで多対多の関係にある行の行をフェッチするためのより良い方法はおそらくありますか?

3
変更が加えられた場合のLaravelEloquentアップデート
レコードに変更が加えられた場合に、雄弁なモデルを使用してLaravelのレコードを更新する方法はありますか?ボタンを押して変更を保存するだけで、正当な理由なしにデータベースを何度も要求するユーザーは必要ありません。javascriptページの変更内容に応じて保存ボタンを有効/無効にする機能がありますが、サーバー側でもこのような機能を確実に実行できるかどうか知りたいです。レコードが変更されているかどうかを確認するだけで、自分で(つまり、フレームワークの内部機能に訴えることなく)それを達成できることはわかっていますが、その前に、Laravelの雄弁なモデルがすでに処理しているかどうかを知りたいと思いますそのため、車輪の再発明をする必要はありません。 これは、レコードを更新するために使用する方法です。 $product = Product::find($data["id"]); $product->title = $data["title"]; $product->description = $data["description"]; $product->price = $data["price"]; //etc (string values were previously sanitized for xss attacks) $product->save();
87 php  laravel  eloquent 


8
Eloquent ORM laravel 5IDの配列を取得します
Eloquent ORM laravel 5.1を使用していますが、0より大きいIDの配列を返したいのですが、私のモデルはtestです。 私が試してみました : $test=test::select('id')->where('id' ,'>' ,0)->get()->toarray(); 戻ります: Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) ) しかし、私は結果を次のような単純な配列にしたいです: Array ( 1,2 )

9
Eloquentモデルでメソッドを呼び出すときに、「非静的メソッドを静的に呼び出すべきではない」というメッセージが表示されるのはなぜですか?
モデルをコントローラーにロードしようとして、これを試しました: return Post::getAll(); エラーが発生しました Non-static method Post::getAll() should not be called statically, assuming $this from incompatible context モデルの関数は次のようになります。 public function getAll() { return $posts = $this->all()->take(2)->get(); } モデルをコントローラーにロードして、その内容を返す正しい方法は何ですか?
84 php  laravel  eloquent 

5
Laravel5.2-Eloquentテーブルのカスタム主キーとして文字列を使用すると0になります
テーブルの主キーとしてメールを使用しようとしているので、雄弁なコードは- <?php namespace App; use Illuminate\Database\Eloquent\Model; class UserVerification extends Model { protected $table = 'user_verification'; protected $fillable = [ 'email', 'verification_token' ]; //$timestamps = false; protected $primaryKey = 'verification_token'; } そして私のDBはこんな感じです- しかし、私がこれを行う場合- UserVerification::where('verification_token', $token)->first(); 私はこれを手に入れています- { "email": "sdfsdf@sdfsdf.sdf", "verification_token": 0, "created_at": "2016-01-03 22:27:44", "updated_at": "2016-01-03 22:27:44" } したがって、検証トークン/主キーは0になります。 誰か助けてもらえますか?

7
Eloquentを使用してモデルのサブタイプのインスタンスを取得する
表Animalに基づいたモデルがありanimalます。 このテーブルには、catやdogtypeなどの値を含むことができるフィールドが含まれています。 次のようなオブジェクトを作成できるようにしたいと思います。 class Animal extends Model { } class Dog extends Animal { } class Cat extends Animal { } それでも、次のように動物をフェッチできること: $animal = Animal::find($id); しかし、フィールドの$animalインスタンスがどこにあるDogか、またはフィールドにCat依存してtypeいる場合、それを使用して確認できるかinstance of、タイプヒント付きメソッドで機能します。その理由は、コードの90%は共有されていますが、一方は鳴き、もう一方は鳴き声を出すことができるためです。 私ができることは知っていますがDog::find($id)、それは私が望んでいることではありません。フェッチされた後でのみ、オブジェクトのタイプを判別できます。動物をフェッチfind()して適切なオブジェクトで実行することもできますが、これは2つのデータベース呼び出しを実行しているため、明らかに不要です。 Dog from AnimalのようなEloquentモデルを「手動で」インスタンス化する方法を探しましたが、対応するメソッドが見つかりませんでした。見逃したアイデアや方法を教えてください。
22 php  laravel  eloquent 

4
Laravelで権限をフィルタリングする際のパフォーマンスのための最良のアプローチ
ユーザーがさまざまなシナリオで多くのフォームにアクセスできるアプリケーションに取り組んでいます。ユーザーにフォームのインデックスを返すときに、最高のパフォーマンスでアプローチを構築しようとしています。 ユーザーは次のシナリオでフォームにアクセスできます。 所有フォーム チームはフォームを所有しています フォームを所有するグループへのアクセス許可を持っている フォームを所有するチームへのアクセス許可を持っている フォームへのアクセス許可があります ご覧のとおり、ユーザーがフォームにアクセスする方法は5つあります。私の問題は、ユーザーにアクセス可能なフォームの配列を最も効率的に返す方法です。 フォームポリシー: モデルからすべてのフォームを取得し、フォームポリシーでフォームをフィルターしようとしました。以下に示すように、各フィルター反復でフォームがcontains()eloquentメソッドを5回通過するため、これはパフォーマンスの問題のようです。データベース内のフォームが多いほど、これは遅くなります。 FormController@index public function index(Request $request) { $forms = Form::all() ->filter(function($form) use ($request) { return $request->user()->can('view',$form); }); } FormPolicy@view public function view(User $user, Form $form) { return $user->forms->contains($form) || $user->team->forms->contains($form) || $user->permissible->groups->forms($contains); } 上記の方法は機能しますが、パフォーマンスのボトルネックです。 私が見ることができるものから、以下のオプションがあります: FormPolicyフィルター(現在のアプローチ) すべての権限をクエリし(5)、単一のコレクションにマージする すべてのアクセス許可のすべての識別子をクエリし(5)、IN()ステートメントの識別子を使用してフォームモデルをクエリします 私の質問: どの方法が最高のパフォーマンスを提供しますか、そしてより良いパフォーマンスを提供する他のオプションはありますか?

5
句がコンマとマージする2つの列
クエリを作成したい。 ここにテーブルがあります: id user_id sn_no 1 22 00112233 2 22 987654325 3 22 65489732 4 25 984123123 5 25 9568456456 6 25 65456456 私はこのような結果が欲しい: { "user_id":22, "sn_no": "00112233,987654325,65489732" } { "user_id":25, "sn_no": "984123123,9568456456,65456456" } 誰もがこの問題を解決するのを手伝ってくれませんか? 私が試した:concat、GROUP_CONCATしかし結果を得ることができません。 これを結合クエリに追加するのを手伝ってくれませんか? $users = \DB::table('users') ->join('users_mcu', 'users.id', '=', 'users_mcu.user_id') ->join('country_user', 'users.id', '=', 'country_user.user_id') ->join('country_phase_color', 'country_user.country_id', …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.