0

User に 'a_property' という名前のプロパティがあり、Post が User に属しているとします。作成ページ (新しい投稿のユーザーが選択したユーザーに自動的に設定するページ) に投稿を追加するとき、ユーザーの a_property を投稿の b_value のデフォルト値として使用するにはどうすればよいですか?

4

3 に答える 3

0

newModelnova リソース クラスに関数を追加できます。

<?php
use App\Post;

public static function newModel(): Post
{
    $model = parent::newModel();
    $model->a_property = '';

    return $model;
}

Nova がリクエストからの属性を入力する前にnewModel()メソッドが呼び出されることに注意してください。モデルが作成された後、イベント オブザーバーを使用して値を入力する必要があります。$post_id

まず、Postモデルのオブザーバーを作成します

$ php artisan make:observer PostObserver --model=Post

次に、コードをcreatedメソッドに入れることができます

<?php /* file: app/Observers/PostObserver.php */

use App\Post;

public function create(Post $post)
{
    // Assume the relation is `user`:
    $post->a_property = $post->user->a_property;
    $post->save();
}

また、このソリューションは基本的に問題を解決できます。テーブルUserPostテーブルの両方に同じ値を格納することはお勧めできません。

于 2019-03-01T10:37:26.510 に答える