Laravel: активная загрузка для отношения hasOne возвращает только одну несвязанную строку, которая является первой строкой в связанной таблице, а все остальные объекты имеют нулевое значение в связанном поле.
//VehicleManufacturer class
class VehicleManufacturer extends Model
{
public function description()
{
return $this->hasOne('App\DescriptionField','id');
}
public function brands()
{
return $this->hasMany('App\VehicleBrand');
}
}
//DescriptionField class
class DescriptionField extends Model
{
public function vehicleManufacturer()
{
return $this->belongsTo('App\VehicleManufacturer');
}
protected $fillable = ['ar','en','fr','nl'];
}
// and this code to get vehicleManufacturers
$manufacturers=VehicleManufacturer::with(['description'])
->take($request->input("length"))
->skip($request->input("start"))
->get();
var_dump($manufacturers->toArray());
И результат:
array(2) { [0]=> array(5) { ["id"]=> int(1) ["created_at"]=> string(19) "2016-09-04 23:15:01" ["updated_at"]=> string(19) "2016-09-04 23:15:18" ["description_field_id"]=> int(48) ["description"]=> array(7) { ["id"]=> int(1) ["ar"]=> string(7) "ddddddd" ["en"]=> string(4) "dddd" ["fr"]=> string(2) "dd" ["nl"]=> string(10) "dddddddddd" ["created_at"]=> string(19) "2016-09-04 23:05:39" ["updated_at"]=> string(19) "2016-09-05 23:45:12" } } [1]=> array(5) { ["id"]=> int(2) ["created_at"]=> string(19) "2016-09-04 23:15:34" ["updated_at"]=> string(19) "2016-09-04 23:15:34" ["description_field_id"]=> int(47) ["description"]=> NULL } }
Чтобы объяснить проблему подробнее:
Моя проблема в том, что запрос возвращает только одну несвязанную строку в описании свойства для первого объекта VehicleManufacturer, а для второго объекта VehicleManufacturer свойство описания имеет значение null.
несвязанный означает, что возвращается другой объект DescriptionField … не тот, который связан с объектом VehicleManufacturer.
обратите внимание, что в первом объекте VehicleManufacturer значение description_field_id равно 48, но свойство description содержит объект DescriptionField с идентификатором 1. И для второго возвращенного объекта VehicleManufacturer значение description_field_id равно 47, а свойство description содержит ноль.
Задача ещё не решена.
Других решений пока нет …