PDA

View Full Version : اضافه کردن صفحه بندی به ریلشن



masiha68
سه شنبه 08 دی 1394, 15:16 عصر
سلام
من میخوام از یه ریلشن واسه لیست ویو استفاده کنم به این شکل

کد:


echo ListView::widget([
'dataProvider' => $user->posts,
'itemView' =>'_memorysItem',
'itemOptions' => ['class' => 'item'],
'id'=>'body',

ولی خطای
Call to a member function getCount() on a non-object

رو میده ... به نظرم مشکل از صفحه بندی باشه و حالا میخوام به اون ریلشن صفحه بندی رو اضافه کنم

public function getPost()
{
return $this->hasMany(Post::className(), ['user_id' => 'id'])->count();
}










این کارو چطوری انجام بدم

مهرداد سیف زاده
سه شنبه 08 دی 1394, 15:49 عصر
چون dataProvider شما این جور که نوشتی یک کلاس نیست بلکه خروجی دیتای یه relation هست ولی برای این کار باید به dataProvider کلاس مدل رو بدید.
در زمان ساخت مدل از Search هم استفاده کنید و در همونجا مسیری برای ساخت کلاس Search بدید. این طوری هر relation دیگری نیاز باشه راحت‌تر میتونید manage کنید.

فعلا برای حل این مشکل از with استفاده کن.


$dataProvider = new ActiveDataProvider([
'query' => Post::find()->with('author')->where(['name'=>'admin']),
]);

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


$dataProvider = new SqlDataProvider([
'sql' => 'SELECT Name, Title, COUNT(ArticleTags.ID) AS TagCount ' .
'FROM Authors ' .
'INNER JOIN Articles ON (Authors.ID = Articles.AuthorID) ' .
'INNER JOIN ArticleTags ON (Articles.ID = ArticleTags.ID) ' .
'WHERE Name=:author' .
'GROUP BY ArticleID',
'params' => [':author' => 'Arno Slatius'],
]);

masiha68
سه شنبه 08 دی 1394, 15:57 عصر
واقعیتش اینه اقای سیف زاده مشکل من اساسی تر از این هاست
من یه دیتابیس دارم با حدود 60 جدول تمای جدول ها هم با جدول یوزر در ارتباط هستن
یه چیزی شبیه این
137880
حالا میخوام یه سلکت کلی بر اساس یوزر بزنم و هر کدوم از بخش ها رو به یک لیست ویو بدم تا نشونش بده
مثلا پست ها رو به یک لیست ویو و note ها رو به یکی دیگه ... ولی این وسط میخام واسه هر کدوم از این بخش ها صفحه بندی لحاظ بشه
به نظرتون همچین چیزی ممکن هست و اگرم اره چطور

مهرداد سیف زاده
سه شنبه 08 دی 1394, 18:04 عصر
آره این کار شدنی هست. من خودم این کار رو توی yii1 انجام دادم
شما ویوها رو بر اساس relation بنویس. بعد از روی view مدل بساز. یعنی خود yii ویو رو هم میتونه مدل درست کنه و بعد از روی مدل بیا grid و لیست درست کن

masiha68
سه شنبه 08 دی 1394, 18:37 عصر
آره این کار شدنی هست. من خودم این کار رو توی yii1 انجام دادم
شما ویوها رو بر اساس relation بنویس. بعد از روی view مدل بساز. یعنی خود yii ویو رو هم میتونه مدل درست کنه و بعد از روی مدل بیا grid و لیست درست کن
چطوری ویوها رو بر اساس ریلشن بنویسم ؟؟ ممنون میشم بیشتر توضیح بدین