• 1399/11/01

رابطه one to many :

استاد سلام

من يك رابطه one to many دارم زماني كه ddميگيرم واز اون رابطه استفاده ميكنم collection را ميده طبق عكس ولي به تك تك فيلد ها خطا زير را ميده لطفا راهنمايي كنيد

Exception

Property [seller_id] does not exist on this collection instance. 

در صورتي كه اين property  در كالكشن وجود دارد

  • 1399/11/01
  • ساعت 11:35

با سلام خدمت شما همراه عزیز

 

 

شما یک رکورد پیدا نکردید که بتونید از روش به فیلدش برسید

چند رکورد پیدا کردید

اول باید با foreach به تک تکشون دسترسی داشته باشید بعد فیلد


  • 1399/11/01
  • ساعت 17:27

استاد سلام اتفاقا داخل foreach هم گذاشتم ولي بازهم نميتونم به تك تك فيلد ها دسترسي داشته باشم 

   
 

        $stations = Station::all();

        foreach($stations as $station)

        {

             return $station->sales->id;

        }

       درحالتي كه فقط sales رو ميزارم اكي هست وفيلدها رو نشوم ميده طبق تصوير زير ولي زماني كه id  رو ميخوام ارور ميده

Exception

Property [id] does not exist on this collection instance.

http://127.0.0.1:8000/home


  • 1399/11/01
  • ساعت 17:28

خوده sales هم جمع هست و باید به تک تکشون دسترسی داشته باشید بعد برید سراغ id


  • 1399/11/01
  • ساعت 17:35

خوب در رابطه poly many to many به اين شكل تعريف كرديم يعني شما مي فرماييد در ويو كه ميخوام استفاده كنم يك foreach براي stations بزنم ويكي براي sales


  • 1399/11/01
  • ساعت 17:37

بله دیگه اسمش روشه sales ینی جمع

وقتی جمع باشه تا زمانی که به تک تک رکورد ها نرسید نمیتونید بگید id که

خب id کدوم؟ باید مشخص بشه


  • 1399/11/01
  • ساعت 17:56

ممنون استاد حل شد 

يه سوال ديگه هم داشتم من در اين جدول sale تاريخ هاي متفاوتي دارم ولي ميخوام بدونم با تاريخ مشابه يعني هر چي تاريخ يكسان در اين جدول هست بياد و به عنوان مثال فروش در اون تاريخ ها رو جمع بزنه و در يك ستون نشون بده و بعد تاريخ بعدي رو به همين شكل يعني جمع فروش روزانه براي هر روز رو ميخوام ولي نميدونم به چه شكل بايد دستور رو بنويسم كه تاريخ يكسان رو پيدا كنه وستون فروش رو جمع بزنه


  • 1399/11/01
  • ساعت 18:02

باید از دستوراتی مثل group by و having در sql استفاده کنید


  • 1399/11/02
  • ساعت 09:48

استاد سلام

براي سوال بالا كه از خدمتتون پرسيدم جستجو كردم از طريق اين روش عبارت های خالص (raw expression) كار انجام شد ولي مخوام بدونم اين موضوع را در پروژه توضيح داده ميشه يا نه چون منابعي كه پيدا كردم توضيح واضحي نداده 


  • 1399/11/02
  • ساعت 11:24

با سلام خدمت شما همراه عزیز

 

خیر زیاد مورد بحث نیست sql نویسی


  • 1399/11/02
  • ساعت 11:45

ممنون استاد شما فرمودید ازgroup by و havingاستفاده کنیم همین روش هست دیگه یا روش دیگه ای هم وجود داره وسوال دیگه اینکه برای ارتباط با دیتابیس بهتره که از query builder استفاده کنیم یا از eloquent orm


  • 1399/11/02
  • ساعت 11:54

شما خام نوشتید دستورات اماده این دوتا که عرض کردم هست در لاراول

 

 

فرقب نداره ولی eloquent راحت تر هست


  • 1399/11/02
  • ساعت 14:01

استاد سلام مجدد من از document لاراول استفاده كردم و دستور رو به اين شكل نوشتم يعني اين روش شيوه خام دستور هست اگر اسنجوريه لطفا راهنمايي بفرماييد 

 

$users = DB::table('users')

             ->select(DB::raw('count(*) as user_count, status'))

             ->where('status''<>'1)

             ->groupBy('status')

             ->get();


  • 1399/11/02
  • ساعت 14:07

بله دیگه این روش خام هست


  • 1399/11/02
  • ساعت 14:17

ميشه لطفا دستور رو برام بنويسيد من اسم جدولم sales هست و يك ستون به نام salesnumber دارم كه ميخوام اعداد اين ستون بر مبناي تاريخ با هم جمع بشه و در خروجي به ازاي هر روز يك جمع بنويسه


  • 1399/11/02
  • ساعت 14:19

$sales_days = Sale::groupBy('date')

             ->selectRaw('SUM(salesnumber) as forosh, date')

  

           ->get();

البيته اين روش هم استفاده كردم و جواب داد منظور شما اين روشه


  • 1399/11/02
  • ساعت 14:43

بله


logo-samandehi