微信扫一扫打赏支持

legend3---6、legend3爬坑杂记

legend3---6、legend3爬坑杂记

一、总结

一句话总结:

学东西不做项目也学不到深处,其实也就是学了没理解透,

 

1、lavarel中模型关联可以用的实质是?

lavarel在数据库中插入数据之后,还从数据库返回了插入的那条数据,所以有我们需要的数据插入的id
$lesson['l_title']=$request['l_title'];
$lesson['l_introduce']=$request['l_introduce'];
$lesson['l_preview']=$request['l_preview'];
$lesson['l_is_commend']=$request['l_is_commend'];
$lesson['l_is_hot']=$request['l_is_hot'];
$lesson['l_click']=$request['l_click'];
$lesson->save();
//dd($lesson['l_id']);
dd($lesson->toArray());

结果
array:9 [▼
  "l_title" => "aa"
  "l_introduce" => "aa"
  "l_preview" => "/images/nopic.jpg"
  "l_is_commend" => "0"
  "l_is_hot" => "0"
  "l_click" => "0"
  "updated_at" => "2019-09-28 14:04:26"
  "created_at" => "2019-09-28 14:04:26"
  "l_id" => 21
]

 

 

2、lavarel中模型关联最大的作用是什么?

精简代码,加快开发效率

 

3、lavarel中的模型中的create方法的作用是什么?

批量赋值,默认情况下使用模型插入数据的时候只能一个一个的赋值
批量赋值
你也可以使用 create 方法来保存新模型, 方法会返回模型实例。不过,在使用之前,你需要先在模型上指定 fillable 或 guarded 属性,因为所有的 Eloquent 模型在默认情况下都不能进行批量赋值。

当我们设置好批量赋值的属性,就可以通过 create 方法插入新数据。 create 方法将返回已保存的模型实例:
$flight = App\Flight::create(['name' => 'Flight 10']);

 

 

4、lavarel自动事务?

DB::transaction方法里面是闭包,参数用use传进去
DB::transaction(function () use ($request,$lesson) {
      //dd($request->toArray());
      $lesson['l_title']=$request['l_title'];
      $lesson['l_introduce']=$request['l_introduce'];
      $lesson['l_preview']=$request['l_preview'];
      $lesson['l_is_commend']=$request['l_is_commend'];
      $lesson['l_is_hot']=$request['l_is_hot'];
      $lesson['l_click']=$request['l_click'];
      $lesson->save();
      //dd($lesson['l_id']);
      //dd($lesson->toArray());

      //2、插入标签课程数据--关系表
      $tags=$request['tags'];
      foreach ($tags as $tag){
          $tag_lesson=[];
          $tag_lesson['tl_t_id']=$tag;
          //$tag_lesson['tl_l_id']=$lesson['l_id'];
          //TagAndLesson::create($tag_lesson);
          //dd($tag_lesson);
          $lesson->hasManyLessonTags()->create($tag_lesson);

      }


      //videos数据过来的时候是json数据,true表示转成数组而非对象
      $videos=json_decode($request['videos'],true);
      //dd($videos);
      foreach ($videos as $video){
          unset($video['v_id']);
          $lesson->videos()->create($video);
//            $lesson->videos()->create([
//                'title'=>$video['title'],
//                'path'=>$video['path'],
//            ]);
      }
  });

 

 

5、lavarel中常驻session的有用信息有哪些?

|||-begin

array:6 [▼
  "nowControllerAction" => "LessonController.index"
  "_token" => "NMEDJcOEzZecOtscrKhgaxRtuXbprWGFxGcRz5JP"
  "_previous" => array:1 [▼
    "url" => "http://legend3.com/admin/lesson"
  ]
  "_flash" => array:2 [▼
    "old" => []
    "new" => []
  ]
  "login_admin_59ba36addc2b2f9401580f014c7f58ea4e30989d" => 1
  "PHPDEBUGBAR_STACK_DATA" => []
]

|||-end

_previous:上一个url
_flash:闪存信息

 

 

6、模型一对多关系:查找视频所属的课程的时候出现Call to a member function lesson() on string错误?

模型关联的方法头应该是集合而不是字符串:所以{{$d['v_title']->lesson()->find(1)}}错误

正确应该为:{{$d->lesson()->find(1)}}

 

 

7、用一对多(反向)的时候,模型关系参数书写错误?

真的可以仔细阅读文档,明确参数含义
//视频属于课程
public function lesson(){
  return $this->belongsTo('App\Model\Lesson', 'v_l_id','l_id');
}

 

 

 

8、在课程和视频的一对多中,如何通过视频获取对应课程的名称?

直接动态属性而非方法的形式:{{$d->lesson->l_title}}

 

9、lavarel视图中一行内的if怎么写?

select中判断是否被选中:@if($video['v_l_id']==$l['l_id']) selected @endif

 

10、Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException 原因?

一般是路由错误,比如修改操作的请求不是PUT方法:@method('PUT')

 

11、模型使用update方式更新(不必用AR模型方式更新)?

$result=Member::where('id','7')->update(['age'=>82']);

 

 

 

二、内容在总结中

 

 

 

 
posted @ 2019-09-30 09:37  范仁义  阅读(379)  评论(0编辑  收藏  举报