由于某种原因传递给它.不过,查看文档,我找不到有关您如何使用CakePHP逃脱数据的任何内容. down datasources/dbo/dbo_mysql.php我找到了似乎只使用mysql_real_escape_string()的value()方法 - 但是您如何从模型中的UP访问该方法? 解决方案 对于 cakephp的模型功能的最多您不必担心逃脱输入. cakephp已经可以保护您免受 SQL注入如果使用: Cakephp的Orm 方法(例如find()和save())加: 正确的数组表示法(即. array('field' => $value))而不是 RAW SQL. 用于对XSS的消毒 保存原始HTML通常更好 在数据库中没有修改和 消毒 输出/显示. 参见 使用准备的语句 $db->fetchAll( 'SELECT * from users where username = :username AND passw
以下是关于 orm 的编程技术问答
我有一个奇怪的问题.我想关闭学说2中代理的自动产生. $config->setProxyDir(APPPATHSYSTEM."/proxies"); $config->setProxyNamespace('Proxies'); // Auto generate proxies for development $config->setAutoGenerateProxyClasses(DEVELOPMENT); 在我的测试环境中,代理位于应用程序/代理.即: application/proxies/BaseUserProxy.php 当我在实时环境上时,我的代码突然在 application/perxies/proxies/proxies 上突然搜索了代理. 我确实知道它与命名空间有关,但是我不明白为什么使用 setAutautogenatementerproxy 方法时的行为不同. 有什么想法? 编辑 我确实使用: 生成了新代理 orm:gen
我遇到了一个问题,即我的Laravel雄辩的模型并没有给我列为" ID"的列的值,它只是将其变为整数(0)而不是字符串.我虽然该列受到某种方式保护,但是在其他模型中," ID"是一个Intenger,但它返回了值. 问题:我不能将varchar用于主键吗? 注意:我必须使用各自的模型创建更多表,其中主要密钥需要为字符串;我有点新的laravel 迁移: Schema::create('country', function (Blueprint $table) { $table->engine = 'InnoDB'; $table->string('id', 5); $table->string('name', 45); $table->string('currency_symbol', 5); $table->string('currency_name', 45); $
如何使用注释设置自动增量ID的起始值? 我希望它从250000 开始 /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ protected $id; 解决方案 /** * @ORM\Id * @ORM\GeneratedValue(strategy="SEQUENCE") * @ORM\SequenceGenerator(sequenceName="id", initialValue=250000) * @ORM\Column(type="integer") */ protected $id; http://doctrine-orm.readthedocs.org/en/latest/latest/reference/basic-mapping.html 其他解决方案 在MySQL平台上,我写下(@ORM\Table(options={"auto_inc
最简单的 orm在PHP周围实现?我正在寻找非常简单且轻巧(就LOC而言,由于速度不是至关重要的,我不需要缓存,而不是),最好是一个文件或类包装不取决于XML或其他配置文件,并且很容易部署. 阅读其他类似问题这是我到目前为止可以找到的最接近的用户),我有兴趣知道是否还有其他ORM实现可能比这更轻. 解决方案 学说和推进很好,但不能说它们是"最简单的". 在这里,有两种替代方案 - php活动记录,出口php orm 希望其中一个会帮助 其他解决方案 我使用了ADODB活动记录:然后,如果您想制作一个光,为什么不构建自己的呢? 其他解决方案 为什么不尝试使用Plain Vanilla PDO(或Mysqli,如果您与MySQL一起工作并且不喜欢PDO)?它并不完全是成熟的ORM,但它允许将查询结果直接获取到对象中.而且,它并没有比这更简单,轻巧和零配置. :)
好吧,我正在浏览Laravel 4文档,以在两个模型之间建立一对多关系.显然,一侧应使用Hasmany().但是对于另一边,我应该使用hasone还是属于属于?有关系吗?有什么区别?为什么两者都存在? 我以为Hasone是一对一的关系,而属于一对一的一侧.但是在文档中,在此处插入相关模型: /a> 他们使用的save()似乎仅存在于hasOne和hasMany之间,而不是belongsTo中.它看起来像belongsTo使用associate()出于相同的目的: 也许我只需要一些关于何时使用belongsTo vs. hasOne的一般背景,为什么belongsTo使用associate()而hasOne hasOne使用save(). 编辑:我想我的混乱点是在文档中( laravel.com/docs/eloquent#inserting与models ),他们使用: $post->comments()->save($comment); 我将在哪
i有Banks表和带有services 的单独表格 $bank = Banks::find(1); echo $bank->service(1); // print bank with that service (serviceId 1) 急切地加载所有银行service_id = 1 .. Bank::with('service(1)')->get(); 预先感谢您 解决方案 当然! with方法接受过滤急切加载的关闭. Bank::with(array('service' => function($query){ $query->where('id', 1); }))->get(); 其他解决方案 使用在模型的位置,您应在数组内传递任何数字. $Data = Banks::whereIn('service_id ', array(1, 2, 3))->get(); var_dump($Data); 我正在使用 var_dump
我已经看到了各种MVC框架以及PHP的独立ORM框架以及其他ORM问题;但是,大多数问题都要求开始现有的框架,这是我想要的. (我还读过如此问题 m不确定该怎么做,因为答案含糊不清.) 相反,我认为我会通过弄脏手并实际写自己的ORM,甚至是简单的方法来学习最好的.除了我真的不知道如何开始,尤其是因为我在其他ORMS中看到的代码非常复杂. 使用我的 php 5.2.x(这很重要) MVC框架我有一个基本的自定义数据库抽象层,其中具有: 非常简单的方法,例如connect($host, $user, $pass, $base),query($sql, $binds),etc 每个DBMS支持 的子类 一个类(和各自的子类)代表SQL结果集 但是没有:具有: 主动记录功能,我认为这是ORM(如果我错了,请纠正我) 编辑:要澄清,我只有一个数据库抽象层.我还没有模型,但是当我实施它们时,我希望它们成为本地ORM模型(可以这么说),因此这个问题. 我已
我想要一个用于更新多行数据库的代码,如下所示: UPDATE values SET data='{"options":["male","female"],"default":"male"}' where project_id=1 and id=1; UPDATE values SET data='{"options":["male","female"],"default":"male"}' where project_id=1 and id=2; UPDATE values SET data='{"options":["male","female"],"default":"male"}' where project_id=1 and id=3; 几个小时后,我可以在Laravel框架中获得这样的结果: $values = Value::where('project_id', $id)->get(); $sql = ""; foreach($request->fields
我正在尝试在从另一个延伸的实体中使用Discriminator.这是我制作的代码: /** * @ORM\Entity * @ORM\Table(name="usuarios_externos.usuarios", schema="usuarios_externos") * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({ * "natural" = "Natural", * "empresa" = "Empresa" * }) * @UniqueEntity(fields={"correo_alternativo"}, message="El correo electrónico ya está siendo usado.") * @Gedmo\SoftDeleteabl
我不确定,是否可以使用DB类而不是雄辩创建模型?我想远离Orm. 谢谢 解决方案 是的,当然可以.您无需扩展任何类即可制作封装业务逻辑的模型类,并包括调用DB类的方法. 只需在app/models/MyModel.php内创建您的模型 class MyModel{ public static function getMyData(){ return DB::table('users')->select('column')->get(); } } 那么,您应该可以静态地致电新课程: $data = MyModel::getMyData(); 如果您想扩展数据库类,尽管您更有可能希望扩展数据库/构建器类以扩展功能,但这是一个复杂的主题,我怀疑您是否会问一个非常不同的问题.是你追求的. 正如我的最后注意,我不会避开雄辩,这是许多其他伟大事物中最伟大的事情 其他解决方案 只需删除"扩展雄辩",然后使用DB
例如,我有一个产品,并且我有一个基础底片. 在产品的模型中,我指定了以下内容: //In class Product public function BaseProduct() { return $this->belongsTo("BaseProduct", "BaseProductId"); } 在基本术中,我已经指定了以下关系: //In class BaseProduct public function Products() { return $this->hasMany("Product", "ProductId"); } 如果我要选择一个产品,例如: $Product::first() 我可以通过以下内容获得基础术: $Product::first()->BaseProduct()->get(); 我没有从中获得结果的数组,我将如何获得基本底部的Model,因此我可以得到所有基本底部的孩子,这意味着所有具有与此基础底
我正在使用Laravel框架. 我想要这一天的所有行.这就是我尝试的: DB::table('users')->where('created_at', '>=', date('Y-m-d H:i:s')) (字段created_at在数据库中以格式表示:Y-m-d H:i:s). 解决方案 嗯...这个问题有一个很好的答案,现在似乎已经消失了.* 这是这样的: User::where('created_at', '>=', new DateTime('today')) 注意:如果将此代码放在带有名称空间的文件中,或者将来可能会使用名称空间,则应将DateTime类前缀带有BackSlash:new \DateTime('today'). * https://stackoverflow.com/questions/questions/15052679/laravel-framewarver-framewarver-how-how-how--ho
(我来自Visual Studio + Entity框架背景,并试图在Laravel + Eloquent中找到等效功能) 在EF和Visual Studio中,我们在应用程序中添加了一个新模型,只需告诉我们现有数据库即可.然后,EF可以为我的表生成模型,该模型具有列的公共属性.这为我们带来了所有这些IDE和编译器的好处,例如Intellisense,拼写错误检测等. 我最近说过探索vs代码,拉拉维尔和雄辩.通过所有这些教程和文章,我不确定在模型类中何时以及如何生成这些属性.我只是尝试了artisan make:model命令,它确实生成了模型类,但是其中没有属性.所以, 我应该手工写它们吗? (真的?) 这些只是带有getter/setter的公共变量或标准属性(对不起,我的.NET心态:)? )? 是否有一个工具/扩展程序可以检查我的数据库并创建具有列的属性的模型? 更新 对回答我问题的人非常感谢.再加上我发表的一些评论是由于我对PHP(奇怪的IMO
我对ORM和PDO之间的差异有些困惑? PDO是一种ORM吗? orm根据我的理解,基本上是一种数据映射,PDO也为数据库数据提供了一个抽象. 解决方案 PDO和ORM是两个完全不同的事情. PDO是数据库访问抽象层的特定实现,它使您可以使用数据库中的API连接,运行SQL和检索结果,该API在不同的数据库后端一致(例如MySQL,PostgreSQL,MS SQL等) ) 另一方面是更专业的东西:它是将关系表映射到应用程序域对象及其之间关系的框架.这些通常是在诸如PDO之类的dal上建造的. 要查看差异,请考虑必须检索对象或记录.使用PDO,您需要编写SQL以在右表中选择右行,并具有提取该行的逻辑,并将字段映射到PHP对象的变量.作为用户,您必须照顾所有这些. 另一方面,使用一个ORM,您只需说:通过此ID找到我的对象X,ORM会做魔术并为您提供该对象,而无需您自己写SQL. 其他解决方案 不,它们是不同的事情. pdo 是与SQL数据库
您对学说有什么经验? 我从来都不是一个Orm的人,我大多数人都只有一些基本的DB抽象层,例如AdoDB. ,但我了解了所有概念和良好的概念.因此,当一个项目出现时,我认为我会尝试一个ORM框架之一. 我已经在学说和推进之间做出决定,所以我选择学说,因为我不想处理phing要求. 我不知道我做错了什么.我以正确的心态进来.而且我绝不是"少年"的PHP孩子.但是我一直在与系统的每一步战斗.有很多文档,但这一切都有些混乱.诸如yaml到db table的创建之类的简单内容也无法使用,而又不出现错误或任何其他内容.许多其他东西有点时髦需要在工作之前进行额外的调整. 也许我在这里做了一些愚蠢的新手假设,一旦我发现了我拥有的AHA时刻.但是现在我完全讨厌系统. 也许有人可以提供一些技巧,或者也许我将有关该主题的良好资源或某些权威网站/个人指出?或者,也许只推荐另一个"仅有效"的ORM框架? 解决方案 我的感情不同.我之所以成为SQL的大师,只是因为它很容易验证.
我从CodeIgniter开始,在Google中潜水了几个小时后,我有点困惑. 让我们尝试用一个简单的例子来解释我的问题:我有一个桌子" car",带有"名称"和"颜色".因此,我想拥有一辆PHP类汽车,以便我的代码最终看起来像这样: $car = new Car('BMW', 'red'); //new $car Object $car->save(); //this will make an SQL insert to the table 'car' //Lets query all cars $cars = Car::get_all(); //cars will be an array of Car objects, (not a set of rows!) 因此,我正在寻找与您在Rubyonrails或Django(Python)中相似的东西.我需要处理各种关系,并能够以真正的OOP+MVC方式编写代码. 这些是我获取它的失败方法: 使用外部ORM
$salons = Salon::select('salons.*') ->selectRaw('( 6371* acos( cos( radians(?) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(?) ) + sin( radians(?) ) * sin( radians( lat ) ) ) ) AS distance', [$lat, $lng, $lat]) ->havingRaw("distance where("category_Id" , "=" , $id) ->get(); 这个查询给了我这个 - "distance": 0.0520573166502
嗨,我在项目(产品)和类别之间有许多与众不同的关系,我使用这三个实体实施: 项目实体: /** * @Entity * @Table(name="items") */ use Doctrine\Common\Collections\ArrayCollection; class Item { /** * * @Id @Column(type="integer") * @GeneratedValue */ private $id_item; /** @OneToMany(targetEntity="ItemCategories", mappedBy="item") */ protected $categories; public function __construct() { $this->categories=new ArrayCollection();
最长的时间,我一直在使用以下基本格式来对我的PHP中的SQL查询: $sql = "SELECT * FROM `user-data` WHERE `id` = '".$id."' LIMIT 1;"; $fn = mysql_fetch_assoc(mysql_query($sql)); 虽然这是完美无缺的,但对于更长的代码而言,它可能会变得非常凌乱,并且每次我这样做时,我的良心深处都会在弦串联上造成一些损失.尽管如此,它仍然有效,我几乎在没有重大问题的情况下将其使用. (这是一个驯服的例子,我不足以将用户数据直接传递到SQL字符串中,而无需先逃脱,等等.) ) 我想做的是更面向对象的事情,但我不确定最好的方法是什么.能够只能插入sql-> insert($ values [,$ where,$ extair]);或类似的东西,使用PHP的自然关联阵列类型以更简化的方式传递查询字符串.灵活较小?是的.更可读?哎呀,是的,很难在此处制作"沉默"语法错误. 社区对此