第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 PHP/Laravel 中,給定`return $this->belongsTo

在 PHP/Laravel 中,給定`return $this->belongsTo

PHP
守著一只汪 2021-12-03 16:44:45
在此示例代碼中:public function user(){    return $this->belongsTo(User::class);}public function sandwich(){    return $this->belongsTo(Sandwich::class);}我想知道User::class叫什么,因?yàn)槟阋部梢赃@樣寫上面的例子:public function user(){    return $this->belongsTo(\App\User);}public function sandwich(){    return $this->belongsTo(\App\Sandwich);}所以我喜歡 Laravel 當(dāng)你使用語(yǔ)法糖時(shí)“只知道”模型在哪里,但它叫什么?我想閱讀一些有關(guān)它的文檔,以便更好地了解幕后發(fā)生的事情。它在某些方面讓我想起了“路由模型綁定”,所以我想要的答案是指向某處相關(guān)文檔頁(yè)面的鏈接,或者我可以通過谷歌來(lái)了解那里究竟發(fā)生了什么。
查看完整描述

2 回答

?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

我想知道 User::class 叫什么


一個(gè)完整的名稱是類名解析。它結(jié)合了 PHP 解析運(yùn)算符:: 和class 關(guān)鍵字。它不是 Laravel 語(yǔ)法糖,而是 PHP 語(yǔ)法糖。


在所有情況下,它都會(huì)返回類的完全限定名稱,該名稱只是一個(gè)包含類文件的絕對(duì)/相對(duì)路徑的字符串 - 取決于使用它的文件/類的命名空間。


來(lái)自PHP 手冊(cè)


... 使用 ClassName::class 獲取類 ClassName 的完全限定名稱


另一方面,從你提到的 Laravel 用例


public function user()

{

    return $this->belongsTo(User::class);

}

Laravel Eloquent 方法belongsTo()和所有類似的方法都指定要傳遞的參數(shù)是字符串。這些方法解析字符串參數(shù)以定位模型的類定義。


來(lái)自Laravel 文檔


傳遞給該hasOne方法的第一個(gè)參數(shù)是相關(guān)模型的名稱。


因此使用


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

或者


return $this->belongsTo(User::class);

在語(yǔ)法上是等價(jià)的。這意味著方法定義完全相同,并且沒有參數(shù)類型檢查,因?yàn)閮蓚€(gè)參數(shù)都是字符串。


所以我喜歡 Laravel “只知道”當(dāng)你使用語(yǔ)法糖時(shí)模型在哪里。


是的,它只知道。但這真的很簡(jiǎn)單。它使用 Eloquent 方法的字符串參數(shù)(現(xiàn)在我們知道無(wú)論語(yǔ)法如何,它都是一個(gè)字符串)和當(dāng)前類提供的 Namespace 來(lái)定位模型定義。


例如這個(gè)類定義


<?php


use Illuminate\Database\Eloquent\Model;


class User extends Model

{

    /**

     * Get the phone record associated with the user.

     */

    public function phone()

    {

        return $this->hasOne('App\Phone');

    }

}

相當(dāng)于


<?php


namespace App;


use Illuminate\Database\Eloquent\Model;


class User extends Model

{

    /**

     * Get the phone record associated with the user.

     */

    public function phone()

    {

        return $this->hasOne(Phone::class);

    }

}

也相當(dāng)于


<?php


use Illuminate\Database\Eloquent\Model;


class User extends Model

{

    /**

     * Get the phone record associated with the user.

     */

    public function phone()

    {

        return $this->hasOne(App\Phone::class);

    }

}

您會(huì)注意到第一個(gè)和第三個(gè)示例不需要該namespace指令,因?yàn)樗鼈兪褂玫氖墙^對(duì)路徑名。


查看完整回答
反對(duì) 回復(fù) 2021-12-03
?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

實(shí)際上 Laravel 并不知道模型在哪里


如果這個(gè)例子有效:


public function user()

{

    return $this->belongsTo(User::class);

}

這是因?yàn)槟P涂赡芪挥谕晃募A或命名空間中,否則您可能應(yīng)該像這樣從其他命名空間導(dǎo)入所需的模型。



//At the top of the file you will import the class


use Maybe\Another\Folder\Namespace\OtherObject;


public function user()

{

    return $this->belongsTo(OtherObject::class);

}

如果您不想“導(dǎo)入”對(duì)象,您應(yīng)該像這樣使用類的完整路徑。


public function user()

{

    return $this->belongsTo(App\OtherFolder\OtherObject::class);

}

總之,laravel 不知道在哪里查找類定義,但是如果您在參數(shù)中傳遞一個(gè)實(shí)例,該實(shí)例將為服務(wù)容器解析,但這是另一個(gè)與模型綁定更相關(guān)的主題


public function method(MyObject $instance)

{

    //Laravel will try to automatically generate an instance of $instance

}


查看完整回答
反對(duì) 回復(fù) 2021-12-03
  • 2 回答
  • 0 關(guān)注
  • 403 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)