草庐IT

eloquent

全部标签

php - Laravel Jensenggers Eloquent 模型对主模型与关系模型进行排序

我正在尝试通过关系模型的列对主模型的整个数据集进行排序。我正在使用LaravelORM5.2.43和JensenggersMongoDb3.1这是我的模型UserEventActivity.php-Mongo模型useJenssegers\Mongodb\Eloquent\ModelasEloquent;classUserEventActivityextendsEloquent{protected$collection='user_event_activity';protected$connection='mongodb';publicfunctionhandset(){return$

php - 使用同步方法 laravel 在 pivot 中进行软删除

我想同步用户表中的一些关系,我不想Laravel删除该行,我想对该行进行一些更新(比如填充deleted_at),到目前为止,我进行了搜索,发现的唯一解决方案是覆盖同步方法。那么我如何覆盖同步方法来更新行呢?或者这个问题的另一个解决方案是什么?已编辑:我知道问题出在detach方法上,如果我可以重写detach方法,问题就会解决!谢谢 最佳答案 我认为您正在寻找这种方法。$user->your_relation()->updateExistingPivot($userid,['deleted_at'=>$date]);

php - 拉维尔 : UPDATE if exist else INSERT?

Laravel中是否有一种方法(Eloquent,Fluent...)更新一行,如果该行不存在,它将被插入? 最佳答案 我不知道Laravel有这样的方法,但是对于mysql你可以通过这样的查询来实现INSERTINTOtSETc1='foo',c2='bar'ONDUPLICATEKEYUPDATEc2='bar'你必须在这个表上有一个唯一的索引才能使技巧起作用 关于php-拉维尔:UPDATEifexistelseINSERT?,我们在StackOverflow上找到一个类似的问题:

php - Eloquent firstOrNew 导致重复录入错误

我试图找到一个项目并在它存在时更新它,或者在它不存在时创建一个新项目。但是,出于某种原因,它似乎试图创建一个新对象,而不是在数据库中已经存在的情况下进行更新。$object=ObjectItem::firstOrNew(array('object_item_id'=>$userEditedObject['object_item_id'],'object_id'=>$object_id));$object->setFields($userEditedObject);if($object->save()){returnTRUE;}else{returnFALSE;}该代码似乎产生了错误“S

php - Eloquent :混淆使用数据透视表

我是Laravel和Eloquent的新手。我的数据库中基本上有这个表:用户:编号电子邮件姓名密码优惠券:编号标题细节折扣user_id(创建者)投票(枢轴):用户编号优惠券编号投票因此用户可以对优惠券进行投票。每张优惠券属于一个用户(创建者)。按照文档,我映射了这样的关系:classCouponextendsModel{publicfunctionusers(){return$this->belongsTo('App\User');//Acouponbelongstooneuser}}classUserextendsModel{publicfunctioncoupons(){retu

php - Laravel RAW 查询比 Laravel 之外的相同查询慢几个数量级

我在Debian上使用Laravel5.2和PHP7.0.6。远程服务器上的MySQL是5.5.30。当我通过HeidiSQL或命令行客户端运行查询时,它的执行时间约为0.2秒。在Laravel中执行完全相同的SQL(Debug模式打开或关闭)需要将近500秒。我尝试从MySQL查询日志中提取Laravel查询并运行它,它运行得很快。只有通过Laravel执行语句时才慢。Laravel代码如下。我的计时器代码在这一行之前和之后,所以减速肯定是在这里。查询只返回一行。$results=\DB::select($sql);下面是查询的匿名版本(否则将显示特定于业务的数据)。希望我在这个过程

php - 突变器不适用于批量插入

我正在尝试使用Order::insert($orderArray);在laravel中插入多条记录我做了一个修改器,它是publicfunctionsetOrderDetailAttribute($value){if($value){$this->attributes['order_detail']=serialize($value);}}突变器不工作。但是当我使用Order::create($orderArray[0][0]);插入单个记录时,mutator工作正常。我的问题是如何将mutator与插入功能或批量插入结合使用。 最佳答案

php - 按时间戳对汇总集合进行排序

在之前的一篇文章中,我询问了有关获取总计的问题,最终是Laravel中值的sum()。但是,当数据返回时,它只输出总和,而没有通常也会​​输出的任何其他信息(例如:关系、时间戳等)。通常,如果我只是将所有内容的总和作为一个数字,这就不是问题。下面是我正在重新创建的视觉对象的硬编码示例,下面是创建它的数据。data:[{period:'2016-04',views:2666,},{period:'2016-05',views:2778,},{period:'2016-06',views:4912,},{period:'2016-07',views:3767,},{period:'2016

php - 从 Laravel 5.2 中的大数据库查询中排除结果的最佳方法

我正在使用Laravel5.2构建大型产品库存,但在显示产品的查询中遇到了问题。这是示例:我的数据库中有很多产品-确切地说超过20k。其中大部分我想每天展示,但大约500-1000个我只需要在一周的特定几天展示。目前我已经回顾了以下方法,每种方法都有其缺点:创建一个表product_availability,其中每一行将包含product_id、工作日和可用(真/假)列。然而,使用这种结构,我将有7行提供1种产品的信息,整个表格将包含~140000行,我认为这不是一个好主意——因为大多数产品无论如何每天都会有货,而且只有500行-1000不会。我的第二个猜测是简单地向产品表添加一个“可

mysql - 在 belongsToMany 关系中使用 name 列而不是 id

我有两个模型,一个是报价(用于报价表),另一个是品牌(用于品牌表)。这些模型之间存在“多对多”关系。我有一个表offer_brands,它映射了这两个表之间的关系。在此表中,我有将此表链接到优惠表的offer_id列和将此表链接到品牌表的品牌列使用品牌表中的品牌名称列。在品牌模型中,我想要一个返回所有报价的关系。我知道我可以做到这一点publicfunctionoffers(){return$this->belongsToMany(Offer::class,'offer_brands','offer_id','brand_id');//Butdon'thavebrand_idcolum