#laravel
#laravel
Вопрос:
Таблица shop_category:
Модель купона:
use Model;
/**
* Model
*/
class Coupon extends Model
{
/**
* @var string The database table used by the model.
*/
public $table = 'coupons';
/**
* @var array Validation rules
*/
public $rules = [
];
public $belongsTo = [
'category' => ['ItScholarBdApiModelsCategory','key' => 'id']
];
}
Модель категории:
use Model;
use Lang;
/**
* Model
*/
class Category extends Model
{
public $implement = ['@RainLab.Translate.Behaviors.TranslatableModel'];
public $translatable = ['name'];
/**
* @var string The database table used by the model.
*/
public $table = 'shop_category';
/**
* @var array Validation rules
*/
public $rules = [
];
public $attachOne = [
'icon' => 'SystemModelsFile'
];
}
Теперь я хочу получить купоны с категорией следующим образом:
$records = ItScholarBdapiModelsCoupon::with(['category']);
Но когда я печатаю записи следующим образом:
echo '<pre>';print_r($records->toArray()); exit;
Это показывает:
Array
(
[0] => Array
(
[id] => 4
[code] => FEAST50
[discount] => 2
[validity] => 2020-11-17 23:59:59
[min_order] => 40
[shop_category_id] => 1
[created_at] => 2020-11-07 17:13:40
[updated_at] => 2020-11-07 17:13:40
[category] =>
)
[1] => Array
(
[id] => 1
[code] => FEAST50
[discount] => 2
[validity] => 2020-11-17 23:59:59
[min_order] => 40
[shop_category_id] => 1
[created_at] => 2020-11-07 17:13:40
[updated_at] => 2020-11-07 17:13:40
[category] => Array
(
[id] => 1
[name] => Shopping
[created_at] => 2020-10-20 16:05:05
[updated_at] => 2020-10-20 16:05:05
)
)
)
Почему индекс ‘category’ первого элемента пуст, поскольку две строки таблицы coupons идентичны? Я изо всех сил пытаюсь найти ошибку, но безуспешно. Какие-либо подсказки?
Комментарии:
1. Что такое внешний ключ в модели купона?
2. shop_category_id
3. Что произойдет, если вы добавите новую строку?
4. Новый raw добавляется нормально.
5. Это может произойти из-за несоответствия данных. Я предлагаю вам удалить обе записи, затем вставить новые строки и повторить попытку
Ответ №1:
public function category(){
return $this->belongsTo(Category::class,'shop_category_id','id');
}
Привет в модели
public function coupon(){
return $this->hasMany(Coupon::class);
}
вы можете вызвать категорию
$coupons = Coupon::with('category')->get();