RuoJun

179 经验值

如题。感觉文档看得一知半解一头雾水。
博主有打算讲这块内容吗?

有一个Discussion模型定义了一对多关系来取得一篇帖子的评论

public function comments(){
    $this->hasMany(Comment::class);
}

在对应的Comment模型里也有定义belongsTo方法(这里省略)
但是万一一篇帖子没有评论,导致Discussion::find(1)->comments取不到东西会报错。
因为显示评论是写在模板里的,我试了一下用@也不能忽略错误,大概是因为模板里有@if之类的语句带有了@导致冲突。除非在模板里写原生的<?php?>
有什么解决办法没有?

有点想不明白,在laravel控制器的__constract方法中注入类的时候,系统会自动为我们实例化那些类吗??
就拿hyperdown来举例

class Parser{
    public function makeHTML($text){
        ...
    }
}

然后有一个控制器PostController,show方法显示用户的帖子。

class PostController extends Controller{
    protected $parser;
    public function __constract(Parser $parser){
        $this->parser = $parser;
    }

    public function show($id){
        $postData = \App\post::findorFail($id);
        $html = $this->parser->makeHTML($postData->contents);
        return view('post',compact('html'));
    }
}

我不能明白,在构建PostController的时候,Parser类是怎么传进去的??
是不是会自动new Parser变成这样

$post = new PostController(new Parser())->show(..)