精华内容
下载资源
问答
  • 2018-06-29 13:44:03

    laravel是PHP框架,以下操作似乎没有用到PHP和MYSQL语句,就这么优雅地搞定了:

    有两个表:

    赛事表:races

    赛事项目表:items (包含字段:race_id)

    一个赛事有多个比赛项目,多个比赛项目对应一个赛事。

    建立模型:

    Race.php

    <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Race extends Model
    {
    protected $fillable = ['title'];
    public function items(){
        return $this->hasMany('App\Models\Item');
    }
    }

    Item.php:

    <?php
    
    namespace App\Models;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Item extends Model
    {
    protected $fillable=['race_id'];
    
        public function race()
        {
            return $this->belongsTo('App\Models\Race');
        }
    
    }
    
    

    控制器:

    RacesController.php

    <?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use App\Models\Race;
    class RacesController extends Controller
    {
    ..........
        public function destroy(race $race)
        {
            $race->delete();
            $race->items()->delete();
            return redirect('/races')->with('notice','删除成功');
        }
       .................................
    }
    
    更多相关内容
  • 一对一关联是一个非常简单的关联关系,例如,一个User模型有一个与之关联的Phone模型,一个人对应一个手机,一个手机对应一个人! user表:id,user_name; phone表:id,phone_name,user_id; 主表:user表,从表:...

    一对一关联是一个非常简单的关联关系,例如,一个 User 模型有一个与之关联的 Phone 模型,一个人对应一个手机,一个手机对应一个人!

    user表:id,user_name;

    phone表:id,phone_name,user_id;

    主表:user表,从表:phone表;

    正向关联

    return $this->hasOne('App\Phone', 'foreign_key', 'local_key');
    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class User extends Model{
        /**
         * 获取关联到用户的手机
         */
        public function phone()
        {
            return $this->hasOne('App\Phone', 'user_id', 'id');    
        }
    }

     

    我们可以从 User 中访问 Phone 模型,相应地,也可以在 Phone 模型中定义关联关系从而让我们可以拥有该手机的 User。我们可以使用 belongsTo 方法定义与 hasOne 关联关系相对的关联:

    反向关联:belongTo

        return $this->belongsTo('App\User', 'foreign_key', 'other_key');

     

    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Phone extends Model{
        /**
         * 获取拥有该手机的用户
         */
        public function user()
        {
            return $this->belongsTo('App\User', 'user_id', 'id');
        }
    }

    一对多

    一个博客文章有多个评论,一个评论只属于某一个文章

    博客文章 post:id,title,author,content,

    评论:comment:id,post_id,

    return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
    

     

    return $this->belongsTo('App\Post', 'foreign_key', 'other_key');
    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Post extends Model{
        /**
         * 获取博客文章的评论
         */
        public function comments()
        {
             return $this->hasMany('App\Comment', 'post_id', 'id');
        }
    }
    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Comment extends Model{
        /**
         * 获取评论对应的博客文章
         */
        public function post()
        {
             return $this->belongsTo('App\Post', 'post_id', 'id');
        }
    }

     

    withDefault?这个是啥玩意?干嘛用的?

    在 Laravel 5.4 中新增加的一个方法

    在实际的过程中,有可能会出现这种情况,某个用户删除了,但是这个用户对应的Phone记录没有删除,或者某个文章删除了,但是这个文章对应的评论没有删除,当我们用Phone Model查询用户的时候,或者用评论查询文章的时候,(用belongTo查询的),就会返回一个null值,有时候这个null值会引发一些问题,现在有点头绪了吧?withDefault()应运而生。

    /**
     * 获取文章作者
     */
    public function user()
    {
        return $this->belongsTo('App\User')->withDefault();
    }

    这种情况下,withDefault 会返回一个 User Model 实例,从而避免了 null 引发的问题。withDefault 方法还支持接收参数, 为生成的实例对象填充数据,参数类型可以是数组或者闭包。

    return $this->belongsTo(User::class)->withDefault([
            'name' => '我是XXX',
        ]);
    
    
    return $this->belongsTo(User::class)->withDefault(function ($user) {
            $user->name = '我是XXX';
        });

     

    多对多

    多对多关联比 hasOne 和 hasMany 关联关系要稍微复杂一些。这种关联关系的一个例子就是在权限管理中,一个用户可能有多个角色,同时一个角色可能被多个用户共用。例如,很多用户可能都有一个“Admin”角色。要定义这样的关联关系,需要三张数据表:usersroles 和 role_userrole_user 表按照关联模型名的字母顺序命名,并且包含 user_id 和 role_id 两个列。

    多对多关联通过编写调用 belongsToMany 方法返回结果的方式来定义,例如,我们在 User 模型上定义 roles 方法:

    users表:id,......;

    roles表:id,.....;

    role_user表:user_id,role_id

     

    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class User extends Model{
        /**
         * 用户角色
         */
        public function roles()
        {
        //这里要注意,Role前必须加APP\,还有就是第二个参数是表名,数据库里那个表叫啥,他就叫啥,第三个参数是本类的字段,第四个参数是要查找的字段
            return $this->belongsToMany('App\Role','role_user','user_id','role_id');
        }
    }

    $userinfo = $user->find($id);

    $return_data = $userinfo->with('roles')->get();

    $return_data = $userinfo->roles()->get();

    接着你就可以使用得到的数据了!

     

     

    展开全文
  • 一对一一对一关联是个非常简单的关联关系,例如,个User模型有个与之关联的Phone模型,个人对应个手机,个手机对应个人!user表:id,user_name;phone表:id,phone_name,user_id;主表:user表,从表:...

    一对一

    一对一关联是一个非常简单的关联关系,例如,一个 User 模型有一个与之关联的 Phone 模型,一个人对应一个手机,一个手机对应一个人!

    user表:id,user_name;

    phone表:id,phone_name,user_id;

    主表:user表,从表:phone表;

    正向关联

    return $this->hasOne(‘AppPhone‘, ‘foreign_key‘, ‘local_key‘);

    1 <?php2

    3 namespace App;4

    5 useIlluminateDatabaseEloquentModel;6

    7 class User extendsModel{8 /**9 * 获取关联到用户的手机10 */

    11 public functionphone()12 {13 return $this->hasOne(‘AppPhone‘, ‘user_id‘, ‘id‘);14 }15 }16

    我们可以从 User 中访问 Phone 模型,相应地,也可以在 Phone 模型中定义关联关系从而让我们可以拥有该手机的 User。我们可以使用 belongsTo 方法定义与 hasOne 关联关系相对的关联:

    反向关联:belongTo

    return $this->belongsTo(‘AppUser‘, ‘foreign_key‘, ‘other_key‘);

    1 <?php2

    3 namespace App;4

    5 useIlluminateDatabaseEloquentModel;6

    7 class Phone extendsModel{8 /**9 * 获取拥有该手机的用户10 */

    11 public functionuser()12 {13 return $this->belongsTo(‘AppUser‘, ‘user_id‘, ‘id‘);14 }15 }16

    一对多

    一个博客文章有多个评论,一个评论只属于某一个文章

    博客文章 post:id,title,author,content,

    评论:comment:id,post_id,

    return $this->hasMany(‘AppComment‘, ‘foreign_key‘, ‘local_key‘);

    return $this->belongsTo(‘AppPost‘, ‘foreign_key‘, ‘other_key‘);

    1 <?php2

    3 namespace App;4

    5 useIlluminateDatabaseEloquentModel;6

    7 class Post extendsModel{8 /**9 * 获取博客文章的评论10 */

    11 public functioncomments()12 {13 return $this->hasMany(‘AppComment‘, ‘post_id‘, ‘id‘);14 }15 }

    1 <?php2

    3 namespace App;4

    5 useIlluminateDatabaseEloquentModel;6

    7 class Comment extendsModel{8 /**9 * 获取评论对应的博客文章10 */

    11 public functionpost()12 {13 return $this->belongsTo(‘AppPost‘, ‘post_id‘, ‘id‘);14 }15 }

    withDefault?这个是啥玩意?干嘛用的?

    在 Laravel 5.4 中新增加的一个方法

    在实际的过程中,有可能会出现这种情况,某个用户删除了,但是这个用户对应的Phone记录没有删除,或者某个文章删除了,但是这个文章对应的评论没有删除,当我们用Phone Model查询用户的时候,或者用评论查询文章的时候,(用belongTo查询的),就会返回一个null值,有时候这个null值会引发一些问题,现在有点头绪了吧?withDefault()应运而生。

    1 /**2 * 获取文章作者3 */

    4 public functionuser()5 {6 return $this->belongsTo(‘AppUser‘)->withDefault();7 }

    这种情况下,withDefault 会返回一个 User Model 实例,从而避免了 null 引发的问题。withDefault 方法还支持接收参数, 为生成的实例对象填充数据,参数类型可以是数组或者闭包。

    return $this->belongsTo(User::class)->withDefault([‘name‘ => ‘我是xzj‘,]);return $this->belongsTo(User::class)->withDefault(function ($user) {$user->name = ‘我是xzj‘;

    });

    多对多

    多对多关联比 hasOne 和 hasMany 关联关系要稍微复杂一些。这种关联关系的一个例子就是在权限管理中,一个用户可能有多个角色,同时一个角色可能被多个用户共用。例如,很多用户可能都有一个“Admin”角色。要定义这样的关联关系,需要三张数据表:users、roles 和 role_user,role_user 表按照关联模型名的字母顺序命名,并且包含 user_id 和 role_id 两个列。

    多对多关联通过编写调用 belongsToMany 方法返回结果的方式来定义,例如,我们在 User 模型上定义 roles 方法:

    users表:id,......;

    roles表:id,.....;

    role_user表:user_id,role_id

    1 <?php2

    3 namespace App;4

    5 useIlluminateDatabaseEloquentModel;6

    7 class User extendsModel{8 /**9 * 用户角色10 */

    11 public functionroles()12 {13 //这里要注意,Role前必须加APP,还有就是第二个参数是表名,数据库里那个表叫啥,他就叫啥,第三个参数是本类的字段,第四个参数是要查找的字段

    14 return $this->belongsToMany(‘AppRole‘,‘role_user‘,‘user_id‘,‘role_id‘);15 }16 }

    $userinfo = $user->find($id);

    $return_data = $userinfo->with(‘roles‘)->get();

    $return_data = $userinfo->roles()->get();

    接着你就可以使用得到的数据了!

    展开全文
  • 创建的2张表字段,及模型关系(hasmany和bekongTo) 增加使用 删除使用 修改使用 查询使用

    创建的2张表字段,及模型关系(hasmany 和 bekongTo)

    增加使用

     删除使用

     修改使用

     查询使用

     

     

    展开全文
  • 老问题,但这是个答案.1和2 – 如果未提供现有图像ID,Laravel的updateOrCreate()方法将更新现有记录并插入新记录.请参阅Eloquent ORM’s Update documentation下的“updateOrCreate”.$images = App\ProductImage::...
  • laravel对多关联模型CURD详解

    千次阅读 2018-08-28 15:10:32
    1、laravel官方文档中给出了种用户-角色(User-Role)关系的例子。在这个例子中,个用户可能与个角色对应,反过来同理,个角色也可能对应个用户。官方说的比较简单,这里详细介绍一下。 个用户可以有个...
  • Model 模型关联关系 一对多 - 多对一 一对多 hasMany() 一对多反向 belongsTo() 定义关系,一个用户可以发布多篇文章,每一篇文章对应一个用户,用户对文章是一对多,文章对用户就是一对多反向,多对一。 ...
  • 一对一 生成相应的表 // 自动表名为identity_cards,手动migration名为create_identity_cards_table php artisan make:migration create_identity_cards_table // 手动表名为identity_cards,手动migration名为...
  • 文章可以接受条评论,视频也可以接受条评论。 表 articles id - integer title - string body - text videos id - integer title - string url - string comments id - integer body - text commen...
  • laravel中间表附加字段的数据,使用第二参数 展示: 代码: //得到添加权限的用户 $user = User::find(19); //得到权限的id,超级管理员id $roleId = 1; //给辉夜设置成超级管理员 $user->role()->...
  • 用户表和角色表,多对多关联,个用户有多个角色,个角色属于多个用户 添加多对多关联attach: 给1号用户添加1号角色,并把关联表的column字段赋值为$value,后边的数组需要的时候再添加 $user = App\User::find...
  • 本博文主要介绍 Laravel 框架中 Eloquent 对一对多关系的处理,在 Laravel Administrator(后台扩展包) 您的数据库可能是彼此相关的。比如,一篇博客文章可能有许多评论,或者一个订单与下订单的用户相关。Eloquent ...
  • 项目:运营人员就个图片,发布篇博客或者篇文章。 表 articles id - integer title - string blogs id - integer title - string images id - integer url - string imageable_id - integer ...
  • 例如个学生需要报多个兴趣班,同时每个兴趣班也会有多个学生,学生和兴趣班之间就是多对多的关系,要定义这种关联,需要三个数据库表:student,classes和classes_student。classes_student表存放学生所报兴趣班的...
  • Laravel中的 Pivot 表与多对多关系

    千次阅读 2019-10-28 21:59:56
    今天谈的是Laravel个非要有用,但开始可能有点难理解的功能。Pivot 表是两个“主表”之间关系的中间表。 Pivot 表实例 在官方文档中,他们用 用户-角色(User-Role) 关系来做例子,用户可能会属于个角色,...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 一对一关联关系中,关闭新增,导出等的操作按钮 $show->author('作者信息', function ($author) { ///admin/users?去admin/routes看一下你就明白 $author->setResource('/admin/users')->panel()->tools...
  • Laravel 模型关联——连带删除

    千次阅读 2020-05-20 10:52:05
    在项目中,我们经常需要在删除一个表中数据的时候,和它相关联的表也要有相应的操作(删除或修改),Laravel 提供了非常便捷的操作方法 解决方法 现在假设我们在做个博客系统,那么就会有文章表、用户表,并且这两...
  • laravel入门-mysql一对多

    2018-12-11 14:06:00
    里面定义了user 和 order的一对多的关系     4. 控制器   1 cat WeclomeController. php 2 3 $u = User::find(1 ); 4 return response( $u -> userTo); 5 6 7 /* ...
  • Laravel 关联表模型和多对多关系

    千次阅读 2017-09-01 23:43:43
    Laravel 关联表模型和多对多关系(pivot table /many-to-many)
  • 所以,laravel模型提供了关联关系,本文就来梳理梳理那些用法。 代码时间 我们不要PPT似的念稿子,罗列出所有的关系模型,那样不直观也不是高效学习的方式。 还是从示例触发,看看关联关系到底解决的是什么问题,...
  • 文章/分类–多对多 写在前面的话:在处理这个问题的时候心态已经爆炸了…在真正解决之后我们就来总结一下吧,毕竟以后要用到的… 项目环境:Laravel5.6+homestead+MySql (下次用laravel6.0试一下,我们要跟上时代的...
  • 本文目录、软删除 、软删除删除必须满足条件: 1、表中必须有个软删除字段 2、模型中引入对应的操作(trait)实现继承
  • 通过主键删除 指定个id $sum=student::destory(1016,1017); $sum=student::destory([1016,1017]);//返回值是删除记录条数 var_dump($sum); 通过指定条件删除 $sum=Student::where('id','>',1010)-&
  • 文件上传对于一些无法被解析的文件可能会造成页面崩溃页面卡死等问题,而解决这个问题的方法就是不去预览这些文件直接进行文件的上传,如何屏蔽预览文件呢?只需要加上行代码即可 文件位置 vendor\encore\...
  • 可以给篇文章打上个标签。可以给个视频打上个标签。 个标签可以贴在个文章上面。个标签也可以贴在个视频上。 表 articles id - integer name - string videos id - integer name - string ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,526
精华内容 1,810
关键字:

laravel 一对多删除