Laravel:如何将值从控制器发送到模型?

Posted

技术标签:

【中文标题】Laravel:如何将值从控制器发送到模型?【英文标题】:Laravel: How to send value from Controller to Model? 【发布时间】: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) 添加到关系中。为了清楚起见,如果您发布关系也可能很有用。 【参考方案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();

【讨论】:

谢谢,您的解决方案也有效:)

以上是关于Laravel:如何将值从控制器发送到模型?的主要内容,如果未能解决你的问题,请参考以下文章

通过 Laravel 中的 AJAX 发布请求将值从一个视图传递到另一个视图

Laravel5.0:将值从控制器方法传递到公共文件夹中的 .php 文件

将值从控制器发送到“标题”视图,但当页面更改时,变量未定义

如何将值从表单传递到数据表

如何将模型值从视图传递到控制器?

AngularJS:如何将值从控制器传递到服务方法?