Laravel 拉威尔模型的奇异行为

Laravel 拉威尔模型的奇异行为,laravel,model,eloquent,Laravel,Model,Eloquent,只是好奇为什么 public function get_number() { if(Model::get()->isEmpty()) { $number = Model::create(['number' => '1111111111']); $nubmer = $number->number; //(returns a... model, that's a suprise for me) } else {

只是好奇为什么

 public function get_number() {

    if(Model::get()->isEmpty()) {

        $number = Model::create(['number' => '1111111111']);

        $nubmer = $number->number; //(returns a... model, that's a suprise for me)

    } else {

        $number = Model::orderBy('number', 'desc')->first()->number;

        $number = Model::create(['number' => $number+1]);

        $number = $number->number; //(returns a property 1111111112 etc).

    }

return $number;
在这两种情况下,我都试图获取模型的属性:

$number = $number->number;
但当“If”部分工作时,它返回一个模型(而不是属性)。。。 当“else”部分工作时,它返回一个属性(我所期望的)

这意味着我不懂拉威尔的话:)


为什么它在“If”情况下返回完整的模型?:)

如果您的
块包含输入错误:

public function get_number() {

if(Model::get()->isEmpty()) {

    $number = Model::create(['number' => '1111111111']);

    // this should be $number
    // $nubmer = $number->number;
    // change it to
    $number = $number->number;

} else {

    $number = Model::orderBy('number', 'desc')->first()->number;

    $number = Model::create(['number' => $number+1]);

    $number = $number->number; //(returns a property 1111111112 etc).

}
您也不需要分配
$number=$number->number,只需返回:

return $number->number;
例如:

public function get_number() {
    if(Model::get()->isEmpty()) {
        $number = Model::create(['number' => '1111111111']);
    } else {
        $number = Model::orderBy('number', 'desc')->first()->number;
        $number = Model::create(['number' => $number+1]);
    }

    return $number->number;
}

if条件
numer
中存在键入错误。在第一种情况下,您将返回model,因为您从未重写
number
变量的原始值。谢谢)太愚蠢了