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 发布请求将值从一个视图传递到另一个视图