Tôi có hai bảng trong cơ sở dữ liệu của tôi - vnames và vtypes
vtypes có trường tên và trường id, vnam có trường id, trường tên và trường vtypes_id là trường được kết nối ngoài . Nó được kết nối với trường id trong vtypes.Kết nối hai bảng trong mysql
Tôi có Vname và Vtype mô hình -
Vname
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Vname extends Model
{
public function vtype() {
return $this->belongsTo('App\Vtype');
}
}
Vtype
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Vtype extends Model
{
public function vname() {
return $this->hasMany('App\Vtype');
}
}
Khi tôi xóa bất kỳ cột nào trong bảng vtype tôi muốn xóa tất cả các vname các cột được liên kết với nó. Tôi tìm thấy một giải pháp như thế này -
public function vtypeDestroy($id) {
$vtype = Vtype::find($id);
$vtype->vname()->detach();
$vtype->delete();
Session::flash('success', 'The vtype was successfully deleted');
return redirect('/vtypes');
}
nhưng khi tôi chạy chức năng này tôi nhận được một lỗi như thế này - Call to undefined method Illuminate\Database\Query\Builder::detach()
Làm thế nào tôi có thể sửa chữa nó?
Và khi tôi muốn lấy tên của vtype từ vname tôi không thể làm điều đó. Tôi đã cố gắng như thế này
@foreach ($vnames as $vname)
{{ $vname->vtype()->name }}
@endforeach
trong một cái nhìn
Nhưng tôi đã nhận một lỗi như thế này - Undefined property: Illuminate\Database\Eloquent\Relations\BelongsTo::$name
Hãy hướng dẫn cho tôi làm thế nào để sửa lỗi này hai vấn đề mà tôi phải đối mặt bây giờ.
khi tôi làm '$ vtype-> vname() -> delete(); 'tôi nhận được một lỗi như thế này' SQLSTATE [42S22]: Cột không tìm thấy: 1054 Cột không xác định 'vtypes.vtypes_id' trong 'where clause' (SQL: xóa khỏi 'vtypes' trong đó 'vtypes'. 'vtypes_id' = 2 và ' vtypes '.' vtypes_id 'không phải là null) ' – Conor
Bạn có thể đăng cập nhật' Mô hình' trong câu hỏi của mình không? –
Câu hỏi đã được cập nhật. – Conor