Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > PHP > PHP Forum > Laravel model relationships ดึงข้อมูล 10000+ record error 500


[PHP] Laravel model relationships ดึงข้อมูล 10000+ record error 500

 
Topic : 132619



โพสกระทู้ ( 20 )
บทความ ( 0 )



สถานะออฟไลน์



ผมเกิดปัญหา ดึกข้อมูล จาก product 10000+ record แล้ว error 500 ครับ

Code (PHP)
1.$vendor = Vendor_profile::find($id)
2.dd($vendor)



Code (PHP)
01.Model Vendor Profile
02.class Vendor_profile extends Model
03.{
04.    protected $table = 'vendor';
05.    protected $primaryKey = 'vid';
06.    public $timestamps = false;
07.    protected $with = ['Product'];
08.  
09. 
10.    public function Product(){
11.        return $this->hasMany(Product::class,'vendId');
12.    }
13. 
14.   
15. 
16.}
17. 
18.Model Product
19.class Product extends Model
20.}
21. protected $table = 'product';
22.    protected $primaryKey = 'prId';
23.    public $timestamps = false;
24.    protected $with = ['Product_many_optional','Pjt_product_status'];
25. 
26.    public function Vendor_profile(){
27.        return $this->belongsTo(Vendor_profile::class,'vid');
28.    }


เมือผม query ปรากฏว่า ขึ้น error 500 ครับ
ผมก็เลย ทดสอบ คอมเม้น โค้ด บรรทัด

Code (PHP)
01.Model Vendor Profile
02.class Vendor_profile extends Model
03.{
04.    protected $table = 'vendor';
05.    protected $primaryKey = 'vid';
06.    public $timestamps = false;
07.    //protected $with = ['Product'];
08.  
09. 
10.   /* public function Product(){
11.        return $this->hasMany(Product::class,'vendId');
12.    }*/
13. 
14.}


และลอง query สามารถ queryข้อมูลได้

ผมก็เลยลอง query table product

Code (PHP)
1.Product::where('vendId','=',264)->get();


มีข้อมูล ประมาณ 10000

ช่วยแนะนำวิธีการแก้ปัญหาให้ผมหน่อยครับ หรือผมไม่ความ ใช้ model relationship ระหว่าง vendor_profile กับ Product ดีครับ
แต่ข้อมูลแค่ 10000 Record มันถึงขนาดเรียกไม่ขึ้นเลยเหรอครับ



Tag : PHP, MySQL, Laravel Framework



ประวัติการแก้ไข
2018-11-23 14:37:45
2018-11-23 14:38:11
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-11-23 14:37:16 By : kittipan View : 1768 Reply : 4
 

 

No. 1



โพสกระทู้ ( 3,848 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์
Twitter Facebook

database อะไร
spec แค่ไหน
ทำ index ไว้มั้ย
จำเป็นต้องเอามทั้งหมด 10,000 มั้ย ถ้าจำเป็น แล้ว server ไม่ไหว ทำ micro service วิ่ง get มาเก็บใน temp table ได้หรือเปล่า

มันมีหลายสาเหตุครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-12-07 17:39:13 By : mongkon.k
 

 

No. 2

Guest


จงดูข้า

Province.php
01.<?php
02. 
03.namespace App;
04. 
05.use Illuminate\Database\Eloquent\Model;
06. 
07.class Province extends Model
08.{
09.    /**
10.     * The table associated with the model.
11.     *
12.     * @var string
13.     */
14.    protected $table = 'provinces';
15. 
16.    /**
17.     * The attributes that are mass assignable.
18.     *
19.     * @var array
20.     */
21.    protected $fillable = [
22.        'name'
23.    ];
24. 
25.    /**
26.     * The attributes that should be mutated to dates.
27.     *
28.     * @var array
29.     */
30.    protected $dates = ['created_at', 'updated_at'];
31. 
32.    /**
33.     * Get the districts for the province.
34.     */
35.    public function districts() {
36.        return $this->hasMany(District::class);
37.    }
38.}


District.php
01.<?php
02. 
03.namespace App;
04. 
05.use Illuminate\Database\Eloquent\Model;
06. 
07.class District extends Model
08.{
09.    /**
10.     * The table associated with the model.
11.     *
12.     * @var string
13.     */
14.    protected $table = 'districts';
15. 
16.    /**
17.     * The attributes that are mass assignable.
18.     *
19.     * @var array
20.     */
21.    protected $fillable = [
22.        'name'
23.    ];
24. 
25.    /**
26.     * The attributes that should be mutated to dates.
27.     *
28.     * @var array
29.     */
30.    protected $dates = ['created_at', 'updated_at'];
31. 
32.    /**
33.     * Get the province of the district.
34.     */
35.    public function province() {
36.        return $this->belongsTo(Province::class);
37.    }


CreateProvincesTable
01.<?php
02. 
03.use Illuminate\Database\Schema\Blueprint;
04.use Illuminate\Database\Migrations\Migration;
05. 
06.class CreateProvincesTable extends Migration
07.{
08.    /**
09.     * Run the migrations.
10.     *
11.     * @return void
12.     */
13.    public function up()
14.    {
15.        Schema::create('provinces', function (Blueprint $table) {
16.            $table->increments('id');
17.            $table->string('name');
18.            $table->timestamps();
19.        });
20.    }
21. 
22.    /**
23.     * Reverse the migrations.
24.     *
25.     * @return void
26.     */
27.    public function down()
28.    {
29.        Schema::drop('provinces');
30.    }
31.}


CreateDistrictsTable
01.<?php
02. 
03.use Illuminate\Database\Schema\Blueprint;
04.use Illuminate\Database\Migrations\Migration;
05. 
06.class CreateDistrictsTable extends Migration
07.{
08.    /**
09.     * Run the migrations.
10.     *
11.     * @return void
12.     */
13.    public function up()
14.    {
15.        Schema::create('districts', function (Blueprint $table) {
16.            $table->increments('id');
17.            $table->string('name');
18.            $table->timestamps();
19.        });
20. 
21.        Schema::table('districts', function (Blueprint $table) {
22.            $table->integer('province_id')->unsigned()->after('name');
23.            $table->foreign('province_id')->references('id')
24.                ->on('provinces')->onDelete('cascade');
25.        });
26.    }
27. 
28.    /**
29.     * Reverse the migrations.
30.     *
31.     * @return void
32.     */
33.    public function down()
34.    {
35.        Schema::table('districts', function (Blueprint $table) {
36.            $table->dropForeign('districts_province_id_foreign');
37.        });
38. 
39.        Schema::drop('districts');
40.    }
41.}

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-12-11 15:10:39 By : ห้ามตอบเกินวันละ 2 กระทู้
 

 

No. 3



โพสกระทู้ ( 198 )
บทความ ( 0 )



สถานะออฟไลน์


น่าจะเป็นตอนที่มัน render แล้ว timeout หรือเปล่าครับ 10000 rows query ไม่นานนะ ลองใช้ pagination เข้ามาช่วยดู
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-12-17 09:35:53 By : DK
 

 

No. 4



โพสกระทู้ ( 1,636 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ลอง เอา 10000 คูณ ด้วยความยาวของของข้อมูลใน 1 เรคคอร์ดดูครับ

10000 = 10 k
ความยาว 1 เรคคอร์ด = 100 byte (แค่ id ชื่อ นามสกุล รหัสผ่าน option) ก็จะเท่ากับ 1 mb

+ข้อมูลใน โปรแกรม มีตัวแปรเยอะไหม ซ้ำซ้อนไหม
และ ถ้าเรียกใช้ ด้วย fetch_array() ก็จะ คูณ 2เท่า

สร้าง function ส่งพารามิเ้ตอร์ แบบไหน ส่งแบบ value หรือ pointer

มีอีกหลายอย่างที่ทำให้ข้อมูลเล็กๆ มันขยายออกไปได้อีก

พยามใช้ตัวแปรประเภท object ให้มากๆ เพราะจะเป็นการอ้างอิงแบบ pointer ช่วยลดหน่วยความจำจากการส่งผ่านข้อมูล

ปล. อีกอย่าง เปิด การแจ้ง error เอาไว้ อ่าน error message ให้มากๆ จะได้รู้ว่าจะแก้ไขอย่างไร


ประวัติการแก้ไข
2018-12-17 10:00:28
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-12-17 09:56:29 By : NewbiePHP
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Laravel model relationships ดึงข้อมูล 10000+ record error 500
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่