Erain Moya Asked: 2020-06-09 15:44:26 +0800 CST 2020-06-09 15:44:26 +0800 CST 2020-06-09 15:44:26 +0800 CST Laravel中的mysql视图[关闭] 772 我可以在 laravel 中使用带有模型的调用表视图吗?它有多好?还是最好用 DB 选择器来调用它? 示例 = vusers / 模型:用户 mysql 1 Answers Voted Best Answer alo Malbarez 2020-06-09T16:37:44+08:002020-06-09T16:37:44+08:00 不仅仅是好坏/实用我会说这是应用程序架构中的设计决策,laravel(雄辩)将视图视为表格。 必须特别考虑如何构建视图以允许updates查看inserts:https ://dev.mysql.com/doc/refman/5.7/en/view-updatability.html 在多个应用程序使用同一个数据库的环境中,定义部分视图通常很方便,例如,将角色过滤委托给数据库引擎。 一个经典的例子: (*) 仅与“学生”用户交互的应用程序 CREATE VIEW estudiantes AS SELECT * FROM usuarios WHERE rol='estudiante' ORDER BY id; 通过不使用聚合或分组函数,视图是“可更新的”并且表现得像一个普通的表,所以: <?php namespace App; use Illuminate\Database\Eloquent\Model; class Estudiante extends Model { protected $table = 'estudiantes'; } 然后它允许您使用wave: <?php use App\Estudiante; $estudiantes = App\Estudiante::all(); foreach ($estudiantes as $estudiante) : echo $estudiante->nombre; endforeach; 如果您不使用视图,则必须按角色显式使用过滤器,如下所示: <?php namespace App; use Illuminate\Database\Eloquent\Model; class Usuario extends Model { protected $table = 'usuarios'; } 它来源于: <?php use App\Usuario; $estudiantes = App\Usuario::where('rol', 'estudiante'); foreach ($estudiantes as $estudiante) : echo $estudiante->nombre; endforeach; 在应用程序端,您可以避免验证角色(例如,这毕竟只适用于学生而不是管理员),而在数据库引擎端,您可以在它知道如何做好的事情上做更多的工作并允许您设置额外的限制,例如WHERE rol='estudiante' AND tienetodopago='SI'应用程序已经接收过滤数据。 注意:我是从内存中把它放在一起的,所以可能会有一些错误,但基本上是的,您可以将视图用作模型中的表(请参阅插入和修改限制)
不仅仅是好坏/实用我会说这是应用程序架构中的设计决策,laravel(雄辩)将视图视为表格。
必须特别考虑如何构建视图以允许
updates
查看inserts
:https ://dev.mysql.com/doc/refman/5.7/en/view-updatability.html在多个应用程序使用同一个数据库的环境中,定义部分视图通常很方便,例如,将角色过滤委托给数据库引擎。
一个经典的例子:
(*) 仅与“学生”用户交互的应用程序
通过不使用聚合或分组函数,视图是“可更新的”并且表现得像一个普通的表,所以:
然后它允许您使用wave:
如果您不使用视图,则必须按角色显式使用过滤器,如下所示:
它来源于:
在应用程序端,您可以避免验证角色(例如,这毕竟只适用于学生而不是管理员),而在数据库引擎端,您可以在它知道如何做好的事情上做更多的工作并允许您设置额外的限制,例如
WHERE rol='estudiante' AND tienetodopago='SI'
应用程序已经接收过滤数据。注意:我是从内存中把它放在一起的,所以可能会有一些错误,但基本上是的,您可以将视图用作模型中的表(请参阅插入和修改限制)