0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Eloquant updateを利用してカラム情報を更新する

Posted at

概要

  • Eloquantのupdateを用いてカラム情報を更新する方法をメモ的にまとめる

謝辞

  • こちらの知見は一緒にプロジェクトに参画してくださっているエンジニアさんから教えていただいた内容です。
  • 改めてこの場を借りてお礼申し上げます!教えていただきありがとうございます!

情報

方法

  1. 当該のモデルクラスで$fillableを登録する。(updateで編集可能なカラム名を$fillableに記載して登録する。)

    app/Models/Content.php
    /**
     * 複数代入可能な属性
     *
     * @var array
     */
    protected $fillable = [
        'カラム名',
    ];
    
  2. 当該のモデルクラスを用いてDBを更新する処理が記載されている箇所に下記のような記載を行う。(筆者の場合リポジトリクラスにDBアクセス処理が記載されている。)

    app/Repositories/ContentRepository.php
    <?php
    
    namespace App\Repositories;
    
    use App\Models\Content;
    use Illuminate\Database\Eloquent\Model;
    
    class ContentRepository implements ContentRepositoryInterface
    {
        public function __construct(Content $content)
        {
            $this->content = $content;   
        }
    
        /**
         * idを用いて情報を取得
         *
         * @param integer $id
         * @return Content
         */
        public function getById(int $id)
        {
            return $this->content->find($id);
        }
    
        /**
         * 投稿内容の保存
         *
         * @param array $requestBody
         * @return Model
         */
        public function update($requestBody)
        {
            $content = $this->getById($requestBody['id']);
            return $content->update($requestBody);
        }
    
  3. ちなみに上記のupdate()に渡される$requestBodyには下記のような値が格納されている。

    array:2 [▼
      "id" => "12"
      "content" => "投稿編集内容"
    ]
    

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?