【问题标题】:Laravel: How to send value from Controller to Model?Laravel:如何将值从控制器发送到模型?
【发布时间】:2021-11-21 20:21:22
【问题描述】:

如何将值从 Controller 发送到 Model,以及如何在 Model 中接收值。

我在上面放一张我的数据库表的图片。

enter image description here

示例:如果我输入 3 部动作片

 $category=category::with('film')->where('name','=','Action')->first();

电影模型:3

class film extends Model{
    protected $table = "film";  //Para nao dar o erro de singular e plural
    protected $primaryKey = 'film_id';
    public $timestamps = false;
    use HasFactory;
    protected $sql=['film_id', 'title', 'release_year'];

    public function category(){
        return $this->belongsToMany(category::class,'film_category', 'film_id', 'category_id');
   }   
}

类别型号:

class category extends Model{
    protected $table = "category";
    protected $primaryKey = 'category_id';
    public $timestamps = false;
    use HasFactory;
    protected $sql=['category_id','name'];

    public function film(){
        return $this->belongsToMany(film::class,'film_category', 'category_id', 'film_id');
    }
}

注意:我意识到我需要在 Category 模型前面添加

->采取(3)

但我不知道如何通过 $category 查询发送值(3 或其他)。

【问题讨论】:

  • 我认为您必须将 limit(3) 添加到关系中。为了清楚起见,如果您发布关系也可能很有用。

标签: sql laravel laravel-8


【解决方案1】:

控制器端

$category=category::with('film')->where('name','=','Action')->film->category($value);

模型侧

    public function category($value){
        return $this->belongsToMany(category::class,'film_category', 'film_id', 'category_id')->where('foo', $value);
   } 

【讨论】:

  • 谢谢,成功了:)
  • @Richard 这个答案如何实现您将查询限制为一定数量的结果的目标?我在这里看不到任何会做任何限制的代码。
  • @miken32 如果你能按照问题告诉最后,你会看到这如何解决他的问题
【解决方案2】:

您可以简单地将条件放在控制器上的“电影”关系的关闭中,以获得 3 部动作电影或任意数量的电影。

控制器:

$limit = 3;
$category=category::with(['film'=>function($query)use($limit)
{
    $query->limit($limt);

}])->where('name','=','Action')->first();

【讨论】:

  • 谢谢,您的解决方案也有效:)
猜你喜欢
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 2021-04-09
  • 2013-12-16
  • 1970-01-01
  • 2015-10-16
相关资源
最近更新 更多