{"id":820,"date":"2025-06-12T00:26:25","date_gmt":"2025-06-11T16:26:25","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/820.html"},"modified":"2025-06-12T00:26:25","modified_gmt":"2025-06-11T16:26:25","slug":"laravel-eloquent%ef%bc%9a%e5%a6%82%e4%bd%95%e6%9e%84%e5%bb%ba%e8%af%84%e5%88%86%e7%b3%bb%e7%bb%9f","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/820.html","title":{"rendered":"Laravel + Eloquent\uff1a\u5982\u4f55\u6784\u5efa\u8bc4\u5206\u7cfb\u7edf"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#26631;&#39064;&#65306;Laravel + Eloquent &#26500;&#24314;&#35780;&#20998;&#31995;&#32479;<\/p>\n<p>&#35780;&#20998;&#31995;&#32479;&#26159;&#35768;&#22810;&#24212;&#29992;&#20013;&#30340;&#37325;&#35201;&#32452;&#25104;&#37096;&#20998;&#65292;&#20363;&#22914;&#22312;&#32447;&#35780;&#35770;&#12289;&#28216;&#25103;&#25490;&#34892;&#27036;&#31561;&#12290;&#22312; Laravel &#21644; Eloquent &#20013;&#65292;&#25105;&#20204;&#21487;&#20197;&#36731;&#26494;&#22320;&#23454;&#29616;&#36825;&#20010;&#21151;&#33021;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65292;&#23637;&#31034;&#22914;&#20309;&#21019;&#24314;&#19968;&#20010;&#35780;&#20998;&#34920;&#65292;&#24182;&#20351;&#29992; Eloquent &#36827;&#34892;&#25968;&#25454;&#25805;&#20316;&#12290;<\/p>\n<h3>1. &#21019;&#24314;&#35780;&#20998;&#34920;&#27169;&#22411;<\/h3>\n<p>&#39318;&#20808;&#65292;&#25105;&#20204;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#35780;&#20998;&#34920;&#30340;&#27169;&#22411;&#12290;&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>Rating<\/code> &#30340;&#34920;&#65292;&#20854;&#20013;&#21253;&#21547;&#29992;&#25143; ID&#12289;&#20135;&#21697; ID &#21644;&#35780;&#20998;&#20540;&#19977;&#20010;&#23383;&#27573;&#12290;<\/p>\n<pre><code class=\"language-bash\">php artisan make:model Rating<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#22312; <code>app\/Models\/Rating.php<\/code> &#25991;&#20214;&#20013;&#23450;&#20041;&#27169;&#22411;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\n\nclass Rating extends Model\n{\n    protected $fillable = ['user_id', 'product_id', 'score'];\n}<\/code><\/pre>\n<h3>2. &#21019;&#24314;&#35780;&#20998;&#34920;&#36801;&#31227;<\/h3>\n<p>&#25509;&#19979;&#26469;&#65292;&#25105;&#20204;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#25968;&#25454;&#24211;&#36801;&#31227;&#25991;&#20214;&#26469;&#21019;&#24314; <code>Rating<\/code> &#34920;&#12290;<\/p>\n<pre><code class=\"language-bash\">php artisan make:migration create_ratings_table --create=ratings<\/code><\/pre>\n<p>&#22312;&#29983;&#25104;&#30340;&#36801;&#31227;&#25991;&#20214;&#20013;&#65292;&#28155;&#21152;&#20197;&#19979;&#20195;&#30721;&#65306;<\/p>\n<pre><code class=\"language-php\">public function up()\n{\n    Schema::create('ratings', function (Blueprint $table) {\n        $table-&gt;id();\n        $table-&gt;unsignedBigInteger('user_id');\n        $table-&gt;unsignedBigInteger('product_id');\n        $table-&gt;integer('score')-&gt;nullable();\n        $table-&gt;timestamps();\n    });\n}\n\npublic function down()\n{\n    Schema::dropIfExists('ratings');\n}<\/code><\/pre>\n<p>&#36816;&#34892;&#36801;&#31227;&#65306;<\/p>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<h3>3. &#21019;&#24314;&#35780;&#20998;&#34920;&#25511;&#21046;&#22120;<\/h3>\n<p>&#29616;&#22312;&#65292;&#25105;&#20204;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#25511;&#21046;&#22120;&#26469;&#22788;&#29702;&#35780;&#20998;&#30456;&#20851;&#30340;&#35831;&#27714;&#12290;<\/p>\n<pre><code class=\"language-bash\">php artisan make:controller RatingController<\/code><\/pre>\n<p>&#22312; <code>app\/Http\/Controllers\/RatingController.php<\/code> &#25991;&#20214;&#20013;&#23450;&#20041;&#25511;&#21046;&#22120;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse AppModelsRating;\nuse IlluminateHttpRequest;\n\nclass RatingController extends Controller\n{\n    public function store(Request $request)\n    {\n        $rating = Rating::create([\n            'user_id' =&gt; $request-&gt;input('user_id'),\n            'product_id' =&gt; $request-&gt;input('product_id'),\n            'score' =&gt; $request-&gt;input('score')\n        ]);\n\n        return response()-&gt;json($rating, 201);\n    }\n\n    public function update(Request $request, $id)\n    {\n        $rating = Rating::find($id);\n\n        if ($rating) {\n            $rating-&gt;update([\n                'score' =&gt; $request-&gt;input('score')\n            ]);\n\n            return response()-&gt;json($rating, 200);\n        } else {\n            return response()-&gt;json(['message' =&gt; 'Rating not found'], 404);\n        }\n    }\n\n    public function destroy($id)\n    {\n        $rating = Rating::find($id);\n\n        if ($rating) {\n            $rating-&gt;delete();\n\n            return response()-&gt;json(['message' =&gt; 'Rating deleted'], 200);\n        } else {\n            return response()-&gt;json(['message' =&gt; 'Rating not found'], 404);\n        }\n    }\n}<\/code><\/pre>\n<h3>4. &#21019;&#24314;&#35780;&#20998;&#34920;&#36335;&#30001;<\/h3>\n<p>&#26368;&#21518;&#65292;&#25105;&#20204;&#38656;&#35201;&#22312; <code>routes\/api.php<\/code> &#25991;&#20214;&#20013;&#23450;&#20041;&#36335;&#30001;&#12290;<\/p>\n<pre><code class=\"language-php\">use AppHttpControllersRatingController;\n\nRoute::post('\/ratings', [RatingController::class, 'store']);\nRoute::put('\/ratings\/{id}', [RatingController::class, 'update']);\nRoute::delete('\/ratings\/{id}', [RatingController::class, 'destroy']);<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#19979;&#38754;&#26159;&#19968;&#20010;&#23436;&#25972;&#30340;&#31034;&#20363;&#20195;&#30721;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#22312; Laravel &#21644; Eloquent &#20013;&#21019;&#24314;&#21644;&#25805;&#20316;&#35780;&#20998;&#31995;&#32479;&#12290;<\/p>\n<h4>1. &#23433;&#35013; Laravel &#21644; Eloquent<\/h4>\n<p>&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102; Laravel &#21644; Eloquent&#12290;&#22914;&#26524;&#27809;&#26377;&#23433;&#35013;&#65292;&#21487;&#20197;&#21442;&#32771;&#23448;&#26041;&#25991;&#26723;&#36827;&#34892;&#23433;&#35013;&#12290;<\/p>\n<h4>2. &#21019;&#24314;&#35780;&#20998;&#34920;&#27169;&#22411;&#21644;&#36801;&#31227;<\/h4>\n<p>&#25353;&#29031;&#19978;&#36848;&#27493;&#39588;&#21019;&#24314;&#35780;&#20998;&#34920;&#27169;&#22411;&#21644;&#36801;&#31227;&#12290;<\/p>\n<h4>3. &#21019;&#24314;&#35780;&#20998;&#34920;&#25511;&#21046;&#22120;<\/h4>\n<p>&#25353;&#29031;&#19978;&#36848;&#27493;&#39588;&#21019;&#24314;&#35780;&#20998;&#34920;&#25511;&#21046;&#22120;&#12290;<\/p>\n<h4>4. &#21019;&#24314;&#35780;&#20998;&#34920;&#36335;&#30001;<\/h4>\n<p>&#25353;&#29031;&#19978;&#36848;&#27493;&#39588;&#21019;&#24314;&#35780;&#20998;&#34920;&#36335;&#30001;&#12290;<\/p>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#36731;&#26494;&#22320;&#22312; Laravel &#21644; Eloquent &#20013;&#21019;&#24314;&#21644;&#25805;&#20316;&#35780;&#20998;&#31995;&#32479;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#20171;&#32461;<\/h2><p>&#26412;&#25945;&#31243;&#23637;&#31034;&#22914;&#20309;&#22312;Laravel&#24212;&#29992;&#31243;&#24207;&#20013;&#26500;&#24314;&#19968;&#20010;&#20855;&#26377;&#24377;&#24615;&#30340;&#35780;&#20998;&#31995;&#32479;&#65292;&#20351;&#29992;Eloquent ORM&#12290;&#35780;&#20998;&#31995;&#32479;&#23545;&#20110;&#35768;&#22810;Web&#24212;&#29992;&#26469;&#35828;&#26159;&#19981;&#21487;&#25110;&#32570;&#30340;&#21151;&#33021;&#65292;&#29992;&#20110;&#25910;&#38598;&#29992;&#25143;&#21453;&#39304;&#12290;Laravel&#26159;&#19968;&#27454;&#27969;&#34892;&#19988;&#20248;&#38597;&#30340;PHP Web&#24212;&#29992;&#31243;&#24207;&#26694;&#26550;&#65292;&#19982;Eloquent ORM&#30456;&#32467;&#21512;&#65292;&#20351;&#24471;&#23454;&#29616;&#36825;&#26679;&#30340;&#31995;&#32479;&#38750;&#24120;&#31616;&#21333;&#12290;<\/p><h2>&#23450;&#20041;&#35780;&#32423;&#27169;&#22411;<\/h2><p>&#39318;&#20808;&#65292;&#21019;&#24314;&#19968;&#20010;&#35780;&#20998;&#27169;&#22411;&#21644;&#36801;&#31227;&#25991;&#20214;&#12290;&#36816;&#34892; Artisan &#21629;&#20196;&#65306;<\/p><pre><code>php artisan make:model Rating -m<\/code><\/pre><p>&#22312;&#21019;&#24314;&#30340;&#36801;&#31227;&#25991;&#20214;&#20013;&#28155;&#21152;&#24517;&#35201;&#30340;&#21015;&#65306;<\/p><pre><code>Schema::create('ratings', function (Blueprint $table) {\n    $table-&gt;id();\n    $table-&gt;foreignId('user_id');\n    $table-&gt;foreignId('post_id');\n    $table-&gt;tinyInteger('rating');\n    $table-&gt;timestamps();\n});<\/code><\/pre><p>&#36801;&#31227;&#36816;&#34892;&#65306;<\/p><pre><code>php artisan migrate<\/code><\/pre><h2>&#24314;&#31435;&#20851;&#31995;<\/h2><p>&#23545;&#20110;&#36825;&#20010;&#20363;&#23376;&#65292;&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026;&ldquo;Post&rdquo;&#30340;&#27169;&#22411;&#65292;&#22312;&#35813;&#27169;&#22411;&#20013;&#29992;&#25143;&#21487;&#20197;&#30041;&#19979;&#35780;&#20215;&#12290;&#22312;Rating&#27169;&#22411;&#20013;&#28155;&#21152;&#20851;&#31995;&#65306;<\/p><pre><code>public function post()\n{\n    return $this-&gt;belongsTo(Post::class);\n}<\/code><\/pre><p>&#27492;&#22806;&#65292;&#36824;&#38656;&#35201;&#22312;Post&#27169;&#22411;&#20013;&#28155;&#21152;&#36870;&#20851;&#31995;&#65306;<\/p><pre><code>public function ratings()\n{\n    return $this-&gt;hasMany(Rating::class);\n}<\/code><\/pre><h2>&#21019;&#24314;&#19968;&#20010;&#35780;&#20998;&#25511;&#21046;&#22120;<\/h2><p>&#20351;&#29992;Artisan&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#65306;<\/p><pre><code>php artisan make:controller RatingController<\/code><\/pre><p>&#28155;&#21152;&#21830;&#24215;&#21644;&#26356;&#26032;&#26041;&#27861;&#65306;<\/p><pre><code>public function store(Request $request)\n{\n    \/\/ Validation and storage logic\n}\n\npublic function update(Rating $rating, Request $request)\n{\n    \/\/ Update logic\n}<\/code><\/pre><h2>&#20992;&#27169;&#26495;&#21644;&#24418;&#24335;<\/h2><p>&#35774;&#35745;&#19968;&#20010;Blade&#27169;&#26495;&#20013;&#30340;&#35780;&#20998;&#32452;&#20214;&#65306;<\/p><pre><code>&lt;form method=\"POST\" action=\"{{ route('ratings.store') }}\"&gt;\n    @csrf\n    &lt;div&gt;\n        \/\/ Rating input elements\n    &lt;\/div&gt;\n    &lt;button type=\"submit\"&gt;Submit Rating&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre><p>&#21019;&#24314;&#20351;&#29992;PUT&#26041;&#27861;&#30340;&#31867;&#20284;&#26356;&#26032;&#34920;&#21333;&#65306;<\/p><pre><code>&lt;form method=\"POST\" action=\"{{ route('ratings.update', $rating) }}\"&gt;\n    @csrf\n    @method('PUT')\n    \/\/ Rating input elements for updating\n&lt;\/form&gt;<\/code><\/pre><h2>&#22312;&#25511;&#21046;&#22120;&#20013;&#22788;&#29702;&#35780;&#20998;&#36923;&#36753;<\/h2><p>&#22312;&#21830;&#24215;&#26041;&#27861;&#20013;&#65292;&#39564;&#35777;&#24182;&#20445;&#23384;&#35780;&#20998;&#65306;<\/p><pre><code>$request-&gt;validate(['rating' =&gt; 'required|integer|between:1,5']);\n$rating = new Rating($request-&gt;all());\n\/\/ Attach user ID to the rating\n$rating-&gt;user_id = auth()-&gt;id();\n$rating-&gt;save();\nreturn back()-&gt;with('message', 'Rating submitted successfully!');<\/code><\/pre><p>&#22312;&#26356;&#26032;&#26041;&#27861;&#20013;&#65292;&#37325;&#29992;&#39564;&#35777;&#36923;&#36753;&#24182;&#26356;&#26032;&#65306;<\/p><pre><code>$request-&gt;validate(['rating' =&gt; 'required|integer|between:1,5']);\n$rating-&gt;update($request-&gt;all());\nreturn back()-&gt;with('message', 'Rating updated successfully!');<\/code><\/pre><h2>&#35745;&#31639;&#32858;&#21512;&#35780;&#20998;<\/h2><p>&#20026;&#20102;&#35745;&#31639;Post&#27169;&#22411;&#30340;&#24179;&#22343;&#35780;&#20998;&#65306;<\/p><pre><code>public function averageRating()\n{\n    return $this-&gt;ratings()-&gt;average('rating');\n}<\/code><\/pre><p>&#26174;&#31034; Blade &#27169;&#26495;&#20013;&#30340;&#24179;&#22343;&#29575;&#65306;<\/p><pre><code>&lt;p&gt;Average Rating: {{ number_format($post-&gt;averageRating(), 1) }}&lt;\/p&gt;<\/code><\/pre><h2>&#38381;&#24149;&#35789;<\/h2><p>&#34429;&#28982;&#31616;&#21333;&#65292;&#26412;&#25945;&#31243;&#20171;&#32461;&#20102;&#20351;&#29992;Laravel&#30340;Eloquent ORM&#24314;&#31435;&#22522;&#30784;&#35780;&#20998;&#31995;&#32479;&#30340;&#27493;&#39588;&#12290;&#36827;&#19968;&#27493;&#30340;&#22797;&#26434;&#24615;&#21487;&#33021;&#28041;&#21450;AJAX&#20197;&#25552;&#20379;&#26080;&#32541;&#29992;&#25143;&#20307;&#39564;&#12289;&#23545;&#22810;&#20010;&#25552;&#20132;&#36827;&#34892;&#39564;&#35777;&#20197;&#21450;&#26356;&#22797;&#26434;&#30340;&#29992;&#25143;&#30028;&#38754;&#20803;&#32032;&#22914;&#26143;&#32423;&#35780;&#20998;&#12290;&#28982;&#32780;&#65292;&#26377;&#20102;&#36825;&#20010;&#22522;&#30784;&#65292;&#26377;&#35768;&#22810;&#26426;&#20250;&#21487;&#20197;&#26681;&#25454;&#20219;&#20309;&#29305;&#23450;&#24212;&#29992;&#31243;&#24207;&#30340;&#38656;&#27714;&#36827;&#34892;&#25193;&#23637;&#21644;&#23450;&#21046;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#35201;&#26500;&#24314;&#19968;&#20010;&#22522;&#20110; Laravel &#21644; Eloquent &#30340;&#35780;&#20998;&#31995;&#32479;&#65292;&#39318;&#20808;&#38656;&#35201;&#30830;&#20445;&#24050;&#32463;&#23433;&#35013;&#20102; Laravel &#20197;&#21450;&#30456;&#20851;&#30340;&#20381;&#36182;&#21253;&#65288;&#22914; Eloquent&#65289;&#12290;&#20197;&#19979;&#26159;&#19968;&#20123;&#22522;&#26412;&#30340;&#27493;&#39588;&#26469;&#21019;&#24314;&#36825;&#26679;&#19968;&#20010;&#31995;&#32479;&#65306;<\/p>\n<ol>\n<li>\n<p>&#21019;&#24314;&#25968;&#25454;&#24211;&#27169;&#22411;&#65288;<code>Score.php<\/code>&#65289;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace App;\n\nuse IlluminateDatabaseEloquentModel;\n\nclass Score extends Model\n{\n   protected $fillable = ['user_id', 'product_id', 'rating'];\n\n   public function user() {\n       return $this-&gt;belongsTo('AppUser');\n   }\n\n   public function product() {\n       return $this-&gt;belongsTo('AppProduct');\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>&#20351;&#29992; Eloquent &#23436;&#25104;&#35780;&#20998;&#25968;&#25454;&#30340;&#28155;&#21152;&#21644;&#26356;&#26032;&#25805;&#20316;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppHttpControllers;\n\nuse AppScore;\nuse IlluminateHttpRequest;\n\nclass ScoreController extends Controller\n{\n   public function store(Request $request) {\n       $score = new Score();\n       $score-&gt;user_id = $request-&gt;input('user_id');\n       $score-&gt;product_id = $request-&gt;input('product_id');\n       $score-&gt;rating = $request-&gt;input('rating');\n\n       $score-&gt;save();\n\n       return redirect('\/')-&gt;with('success', 'Your score has been saved.');\n   }\n\n   public function update(Request $request, $id) {\n       $score = Score::find($id);\n\n       if ($score) {\n           $score-&gt;user_id = $request-&gt;input('user_id');\n           $score-&gt;product_id = $request-&gt;input('product_id');\n           $score-&gt;rating = $request-&gt;input('rating');\n\n           $score-&gt;save();\n\n           return redirect('\/')-&gt;with('success', 'Your score has been updated.');\n       } else {\n           return redirect('\/')-&gt;with('error', 'No score found with ID: ' . $id);\n       }\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>&#28155;&#21152;&#36335;&#30001;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nRoute::get('\/', function () {\n   return view('welcome');\n});\n\nRoute::resource('scores', 'ScoreController');<\/code><\/pre>\n<\/li>\n<li>\n<p>&#22312;&#25511;&#21046;&#22120;&#20013;&#22788;&#29702;&#29992;&#25143;&#35831;&#27714;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppHttpControllers;\n\nuse AppScore;\nuse IlluminateHttpRequest;\n\nclass ScoreController extends Controller\n{\n   public function __construct()\n   {\n       $this-&gt;middleware('auth');\n   }\n\n   public function show($id)\n   {\n       $score = Score::findOrFail($id);\n       return view('show', compact('score'));\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>&#37096;&#32626;&#21040;&#29983;&#20135;&#29615;&#22659;&#65306;<\/p>\n<ul>\n<li>&#23558;&#39033;&#30446;&#25171;&#21253;&#20026; Laravel &#24212;&#29992;&#31243;&#24207;&#12290;<\/li>\n<li>&#21551;&#21160;&#24182;&#35775;&#38382;&#24212;&#29992;&#31243;&#24207;&#12290;<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>&#20197;&#19978;&#23601;&#26159;&#22312; Laravel + Eloquent &#20013;&#26500;&#24314;&#35780;&#20998;&#31995;&#32479;&#30340;&#31034;&#20363;&#12290;&#36890;&#36807;&#36825;&#20123;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#21487;&#20197;&#25509;&#21463;&#29992;&#25143;&#36755;&#20837;&#24182;&#20445;&#23384;&#35780;&#20998;&#30340;&#25968;&#25454;&#31649;&#29702;&#31995;&#32479;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#26631;&#39064;&#65306;Laravel + Eloquent &#26500;&#24314;&#35780;&#20998;&#31995;&#32479; &#35780;&#20998;&#31995;&#32479;&#26159;..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-820","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/820","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=820"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=820"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=820"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}